Понимание установки библиотеки PHP

Я пытаюсь понять параметры и терминологию, относящиеся к «установке» библиотек PHP в системе (Linux/OSX)

Вот некоторые конкретные моменты, которые я пытаюсь охватить:

  1. Что означает «установить» применительно к библиотекам PHP?
  2. В чем разница между библиотеками и расширениями?
  3. Как вписывается php.ini?
  4. Как вписывается ГРУША?
  5. Как вы импортируете/включаете библиотеки?
  6. Если я создам свою собственную библиотеку, как лучше всего ее упаковать и распространить?

Спасибо и извините за многословие...


person Yarin    schedule 09.12.2010    source источник
comment
Некоторые из них находятся прямо в документации по php: php.ini, PECL/PEAR.   -  person eykanal    schedule 09.12.2010


Ответы (2)


Пара моментов...

PHP не имеет встроенной инфраструктуры «импорта», такой как python, java или .net. Существует несколько способов использования библиотек в PHP.

  1. скомпилируйте их в двоичный файл PHP. Это самый продвинутый способ, и обычно он нежелателен, если только у вас нет особых потребностей.

  2. Установите их как модули PHP на сервере и включите в PHP.ini. С точки зрения PHP-программиста эти расширения являются частью PHP и всегда доступны. Просто их проще добавлять и удалять без необходимости перестраивать сам PHP.

  3. Установите PHP-код где-нибудь на сервере и включите его в свой PHP-скрипт.

  4. Сохраните копию библиотеки в свой проект и включите ее в свой PHP-скрипт.

--
На базовом уровне код является либо частью интерпретатора (статического или динамического), либо это обычный PHP-код, включенный в ваш проект с помощью метода include().

Для ваших целей я могу только предложить вам придерживаться стандартного дистрибутива PHP (выберите хорошую ОС Linux и используйте ее PHP). Тогда почти все библиотеки, которые вам понадобятся на уровне интерпретатора, доступны в виде дополнительных пакетов, и сложность этого остается на усмотрение тех, кто занимается этим каждый день.

В RedHat/Centos вы можете запустить:

yum install php php-memcached php-gd php-pecl

--
Что касается всех других видов библиотек, которые вы, возможно, захотите использовать, то, скорее всего, лучше всего использовать хороший PHP-фреймворк, который позаботится обо всем этом за вас.

Некоторые примеры:

  1. Зенд Фреймворк
  2. ТортPHP
  3. Кодигнитер
  4. http://www.phpframeworks.com/
  5. Так далее...

(не в любом порядке, только те, что пришли в голову)

При условии, что вы использовали стандартный подход использования RPM или аналогичных для управления скомпилированными аспектами PHP и расширений, тогда хорошая надежная структура позаботится о включении всего вашего дополнительного кода библиотеки PHP, который вам нужен.

Конечным результатом является то, что вы сосредотачиваетесь на выпуске продукта, а не на всей инфраструктуре, которую в противном случае вам пришлось бы изучать и изобретать.

--
php.ini анализируется и запускается при запуске PHP (каждый раз для командной строки, один раз при запуске сервера в apache). Он определяет множество настроек, включает множество модулей, настраивает эти модули и т. д.

На самом деле вы можете переопределить некоторые настройки в php.ini с помощью функции ini_set() в PHP. Однако это эффективно только для некоторых настроек. Другие должны быть установлены до запуска вашего скрипта.

При работе под apache вы можете добавить строки в директивы .htaccess и <VirtualHost>, которые полностью переопределяют PHP.ini для этого каталога/виртуального хоста.

(пожалуйста, исправьте мой синтаксис и удалите это примечание, если оно неверно)

<VirtualHost *>
    ServerName www.example.com       
    DocumentRoot /home/joe/site/docroot
    php_value include_path "/home/joe/site/php-code"
</VirtualHost>

--
В ответ на ваш вопрос № 6 о вашей собственной библиотеке и лучшем способе ее упаковки я предлагаю вам сначала оценить потребность в библиотеке. И если вы действительно в чем-то разбираетесь, то выясните наиболее распространенный способ, которым люди это делают. Если это простая библиотека, то файла .php с красивым веб-сайтом будет достаточно.

--
Возможно, это немного бессвязно, но я надеюсь, что это укажет вам правильное направление.

person gahooa    schedule 09.12.2010

Все, что напрямую связано с PHP:

  1. Обычно просто копируют и убеждаются, что то, что хочет использовать, знает, где оно находится.
  2. Расширение обычно пишется на C и загружается интерпретатором, тогда как под библиотекой обычно подразумевается родная библиотека PHP.
  3. Не знаю, что вы хотите знать здесь. Ini загружает расширения и устанавливает некоторые настройки. Это не связано напрямую с установками, .... Вы можете настроить свой путь включения (или что-то еще) здесь.
  4. Вы можете установить с ним библиотеки ;) Тоже не знаю, что вы хотите знать.
  5. обычно require(_once) или include(_once). Для классов можно настроить автозагрузчик. Обратитесь к руководству по PHP.
  6. пакет/архив (zip, gz, tarball, ..) и сделать ссылку для скачивания? Также: Не знаю, чего ты хочешь.

Если вы хотите писать библиотеки PHP и вам нужен простой способ упаковки и распространения, взгляните на PEAR.

person KingCrunch    schedule 09.12.2010
comment
спасибо, но не могли бы вы пролить свет на то, почему PEAR будет проще, чем просто упаковать .. и сделать ссылку для скачивания? - person Yarin; 09.12.2010
comment
Установка с грушей осуществляется двумя строками: pear channel-discover mychannel.example.com и pear install mychannel.example.com/MyPackage. Если у вас нет канала-сервера (Google для pearfarm ;)), вы также можете предоставить загружаемый пакет. Дальше установка что-то вроде pear install MyPackage-x.y.z.tgz (x.y.z зависит от версии файла пакета). Чтобы создать пакеты, вы должны написать package.xml (google for pear package.xml ;)), но когда он существует, это всего лишь короткая pear package для создания нового пакета, который вы затем можете загрузить на свой хост или канал-сервер. - person KingCrunch; 09.12.2010