Русскоязычный форум, посвященный фреймворку Kohana http://forum.kohanaframework.su/ |
|
Как подключить и использовать стороннюю библиотеку? http://forum.kohanaframework.su/viewtopic.php?f=31&t=736 |
Страница 1 из 3 |
Автор: | nkl [ 20 авг 2013, 12:40 ] |
Заголовок сообщения: | Как подключить и использовать стороннюю библиотеку? |
Не думайте что я не был в гугле или в оф. api. Положил библиотеку в папку vendor (в корне директории с коханой), делаю: Код:
а она мне тупо ничего не возвращает. Вообще как будто и не работает этот метод Kohana::find_file. В чем может быть проблема? Дальше я хотел сделать так: Код:
И уже работать с библиотекой. Но не получается. Не находит нужный файл или вообще не работает Kohana::find_file. В чем может быть проблема? |
Автор: | WinterSilence [ 20 авг 2013, 12:59 ] |
Заголовок сообщения: | Re: Как подключить и использовать стороннюю библиотеку? |
расширение файла inc? а как он выполняться будет без доп деректив. слеш вначале лишний. |
Автор: | nkl [ 20 авг 2013, 16:01 ] |
Заголовок сообщения: | Re: Как подключить и использовать стороннюю библиотеку? |
А где эти директивы прописать нужно? Я так понимаю в главном файле index.php строка 32: Код:
Но как туда еще одно разрешение добавить (что бы .php осталось в деле как прежде)? Дело в том, что там вся библиотека из .inc файлов состоит. Посмотрите PHPdocX. Или это директивы в настройках апача нужно прописывать? Хотя этот вариант можно смело отметать, ибо на этом же сервере в соседнем домене нативный php работает с .inc прекрасно. Тестировал библиотеку голым php без фреймворков, все работает на "ура". И потом, не зря у метода Kohana::find_file есть необязательный параметр для указания расширения. В api, там как раз пример приводиться для css файла. |
Автор: | nkl [ 20 авг 2013, 16:06 ] |
Заголовок сообщения: | Re: Как подключить и использовать стороннюю библиотеку? |
Цитата: а как он выполняться будет без доп деректив Я еще не пытаюсь его выполнять. Мне хотя бы путь до него получить при помощи Kohana::find_file. Этот метод тупо не работает. Код:
Переменная $path пустая. |
Автор: | WinterSilence [ 20 авг 2013, 16:24 ] |
Заголовок сообщения: | Re: Как подключить и использовать стороннюю библиотеку? |
расширения исполняемых файлов прописываются в настройках сервера(по умолчанию php и phtml) т.е. если ты сделаешь test.txt, а в нем php код, то он, в отличии от test.php, при include\require будет вставлен как текст, а не будет интерпретирован как код. Kohana::find_file не сможет найти файл в `DOCROOT.vendor` - он ищет в папке приложения, модулей и системы, т.к. тебе известен путь к данному файлу, то смысла гонять лишний код нет - сделай include_once `DOCROOT.vendor/phpdocx/classes/CreateDocx.inc` |
Автор: | nkl [ 20 авг 2013, 23:22 ] |
Заголовок сообщения: | Re: Как подключить и использовать стороннюю библиотеку? |
В общем-то, спасибо за подсказки. Файл включил, но теперь сама библиотека никак не хочет работать. Ругается след. образом Цитата: ErrorException [ Fatal Error ]: Call to undefined method Debug::getInstance() Проверил, действительно, в файле CreateDocx происходит вызов этого метода в указанной в ошибке строке: Код:
В самом верху этого файла (CreateDocx), есть след. включения: Код:
Я уже переименовал расширения всех файлов на php. Проверил в соседнем домене нативным php, в самом коде библиотеке во всех местах где использовалось включение файлов с .inc, тоже переписал в .php, там все работает. Теперь в Kohana, как я понял не отрабатывает метод AutoLoader::load(); Вот его код (Автолоадера): Код:
Как я понимаю, проблема в работе след. метода: Код:
Самое сомнительное здесь это использование spl_autoload_register(); Уместно ли использование этой замечательной функции в Kohana? Или т.к. она уже используется в кохане (умные поправят, возможно и не используется аутолоадер), то поэтому сей autoloader и не работает? |
Автор: | WinterSilence [ 20 авг 2013, 23:36 ] |
Заголовок сообщения: | Re: Как подключить и использовать стороннюю библиотеку? |
Класс Debud содержится в Кохане, поэтому CreateDocx вместо своего загружает кохановский в котором естественно совсем другие методы. подобные конфликты решаются с помощью namespace http://php.net/manual/ru/language.namespaces.php |
Автор: | Sergey [ 20 авг 2013, 23:51 ] |
Заголовок сообщения: | Re: Как подключить и использовать стороннюю библиотеку? |
Код элементарный. Не понимаю, что тут сложного... Вы уж потрудитесь, потратьте несколько часов, если вы совсем новичок в этом. Без понимания принципа автозагрузки классов вам будет тяжело, если конечно вы себя видите PHP программистом. Этот код очень легко переписать, адаптировать под Kohana, если он вас смущает в том виде, в котором есть. Хотя меня, откровенно тоже смущает ) я бы слегка переписал его так, чтоб можно было использовать подобным образом: Код:
или даже вот так Код:
по моему это очевидно. А вообще, было бы конечно не плохо, если бы вы не поленились, и преобразовали бы это в полноценный Kohana модуль. Тем более, что делов тут на пол вечера максиму Ссылки на тему: Автоматическая загрузка классов spl_autoload_register() предоставляет более гибкую альтернативу для автоматической загрузки классов Автозагрузчик классов PHP, Autoload How - To Автозагрузка классов в PHP с использованием SPL SplClassLoader implementation that implements the technical interoperability standards for PHP 5.3 namespaces and class names Некоторые из приведённых выше автозагрузчиков используют namespaces (пространства имён), но я не думаю, что кого-то это может привести затруднение. |
Автор: | WinterSilence [ 21 авг 2013, 00:00 ] |
Заголовок сообщения: | Re: Как подключить и использовать стороннюю библиотеку? |
Я посмотрел эту библиотеку, это огрызок от платной версии http://www.phpdocx.com/documentation/features не понимаю зачем с ним вообще возиться. Посмотрел доки по данному формату http://fritool.ru/2013/07/php-docx/ , хэлпер можно и самому сделать, получилось бы быстрее. Но если лень, то нашлись: https://github.com/djpate/docxgen https://github.com/nagilum/DOCx http://phpword.codeplex.com/ http://www.phpclasses.org/package/8175- ... mplate.htm http://www.phpclasses.org/package/3553- ... jects.html |
Автор: | nkl [ 21 авг 2013, 00:18 ] |
Заголовок сообщения: | Re: Как подключить и использовать стороннюю библиотеку? |
На счет огрызка вы правы. Меня эти танцы с бубном вокруг него уже доконали и еще хуже всего то, что основную задачу он не решит. Генерация docx, xlsx и pdf по шаблону который пользователь создал при помощи MS Office Word/Excell. Видимо придется писать модуль/хелпер. Только я в этом не селен. В принципе, ничего сложного нет, сам формат docx располагает к этому. Спасибо за информацию. Выложу в эту тему результат (если он конечно будет). |
Страница 1 из 3 | Часовой пояс: UTC + 4 часа [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |