PHP – Расширение против библиотеки против класса – когда и почему

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

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

Также, когда вы выпускаете свой собственный код, что заставляет вас решать, как выпускать библиотеку против класса или расширения? или вы идете с тем, что лучше звучит?

заранее спасибо.

PS Если вы должны знать, какое расширение я говорю, это Libpuzzle , но это действительно не так, мой вопрос более общий.

Расширения являются низкоуровневыми. Обычно они написаны на C / C ++ и скомпилированы в общие библиотеки с открытым кодом, они напрямую взаимодействуют с Zend Engine. У этого есть плюсы и минусы, главные преимущества – скорость и больший контроль; и основные недостатки – их сложнее установить и требуют компиляции (и для этого требуются компиляторы и заголовки PHP); это не так, потому что им нужен root-доступ, хотя вам нужно только использовать пользовательскую функцию php.ini (или dl() , но я вижу, что они почему-то не рекомендуют ее).

Библиотеки / классы являются высокоуровневыми и интерпретируемыми. Если вы не знаете, нужно ли писать расширение, то, вероятно, нет. О каких классах – читайте о ООП . Библиотека представляет собой многократно используемую коллекцию кода (чаще всего в виде функций / классов).

Расширение представляет собой код кода, запрограммированный в C, который будет включен в ядро ​​PHP при запуске PHP. Как правило, у вас есть еще несколько собственных функций после включения расширения. Например, функция zip.

Класс представляет собой абстрактный код PHP-кода, который решает общие задачи. Например, отправка писем. Вы можете найти некоторые общие классы на pear.php.net .

Библиотека представляет собой набор классов PHP, которые решают более общие задачи, например, путают HTML-формы и отправляют электронные письма. Zend Framework – это структура, состоящая из многих, многих классов PHP.

Обычно функции расширения могут быть запрограммированы в PHP. Например, класс PEAR :: Compat . Часто вы найдете нужную функциональность в качестве доступного класса PHP. Я уверен, что считыватели stackoverflow предоставят вам идеи, где можно найти определенный класс PHP.

Некоторые библиотеки (включая libpuzzle) также включают инструмент командной строки. Поэтому, если вы не можете использовать библиотеку PHP из-за своей общей среды размещения, возможно, вы можете скомпилировать инструмент командной строки. Затем вы можете запустить его с PHP, используя что-то вроде exec . Он будет медленнее и потребует больше памяти, чем библиотеки, но он может выполнить эту работу. Конечно, многие хосты также имеют ограничения на команды типа exec, поэтому это может и не сработать.