Статьи

Вкус проектов с PHP5

Просто привлекая внимание к некоторым интересным проектам, написанным специально для PHP5.

Во-первых, это cowiki, которая, несмотря на то, что была выпущена только в выпуске 0.3.x, уже зарекомендовала себя и работает на сайте phpCommunity . Код очень хорошо организован, заполнен шаблонами, и ясно, что автор знает Java. Кажется, что нет никакой зависимости от других библиотек PHP, поэтому колеса заново изобретаются, но, как таковое, оно представляет интересное исследование для тех, кто ищет советы о том, как использовать новые функции PHP5. Это немного слишком вдохновило Java на мой вкус, например, есть базовый класс «Object» — для размышлений по поводу этих строк прочитайте « Вопросы разработки приложений PHP» . Конечно, каждый сам по себе и, возможно, наличие дополнительных встроенных абстракций помогает, в то время как сам PHP5 все еще является движущейся целью.

Еще два интересных проекта можно найти на http://www.phpdb.org .

Во-первых, это Creole , библиотека абстракций базы данных, написанная специально для PHP5 и смоделированная по образцу Java JDBC. Это определенно привлечет толпу Java, и код, опять же, очень хорошо организован. Вот пример подключения, выполняющего запрос;

$dsn = "mysql://dbuser:dbpass@localhost/testdb"; $conn = Creole::getConnection($dsn); $rs = $conn->executeQuery("SELECT id, name FROM users"); while($rs->next()) { echo $rs->getString("name") . " (" . $rs->getInt("id") . ")n" }

$dsn = "mysql://dbuser:dbpass@localhost/testdb"; $conn = Creole::getConnection($dsn); $rs = $conn->executeQuery("SELECT id, name FROM users"); while($rs->next()) { echo $rs->getString("name") . " (" . $rs->getInt("id") . ")n" }

$dsn = "mysql://dbuser:dbpass@localhost/testdb"; $conn = Creole::getConnection($dsn); $rs = $conn->executeQuery("SELECT id, name FROM users"); while($rs->next()) { echo $rs->getString("name") . " (" . $rs->getInt("id") . ")n" }

$dsn = "mysql://dbuser:dbpass@localhost/testdb"; $conn = Creole::getConnection($dsn); $rs = $conn->executeQuery("SELECT id, name FROM users"); while($rs->next()) { echo $rs->getString("name") . " (" . $rs->getInt("id") . ")n" }

Я немного раздражен методами, называемыми в PHP такими вещами, как getInt (). Также мне интересно узнать о моделировании после JDBC, в котором (по моему мнению) слишком много внимания уделяется «исключительным» случаям (в конце концов, Java является языком общего назначения), а не тому, чтобы сосредоточиться на том, чтобы сделать общие случаи как можно более легкими (выгрузка SELECT в HTML-таблица является распространенным случаем в PHP).

В отличие от этого, API-интерфейс DBC (менеджера соединений с базой данных) WACT сокращает выборку набора результатов (включая соединение с базой данных, настройки соединения, хранящиеся в INI-файле);

$DataSet = & DBC::NewRecordSet('SELECT id, name FROM users');

while ($ DataSet-> next ()) {
echo $ DataSet-> get (‘name’). «(«. $ DataSet-> get (‘id’). «) N»
}

И получение постраничного набора результатов выглядит так;

$PagedDataSet = & DBC::NewPagedRecordSet('SELECT id, name FROM users', $Pager);

Где $ Pager является экземпляром «компонента подкачки».

В любом случае, если не принимать во внимание такие проблемы, другим проектом на http://www.phpdb.org является Propel , инструмент объектно-реляционного сопоставления, основанный на крутящем моменте (Java) Apache. Как только ваш слой отображения построен, он позволяет вам блаженно не знать SQL (и базовые уровни абстракции базы данных) и иметь дело исключительно с объектами. Приведенные выше примеры могут стать;

$Users = UserPeer::doSelect();

foreach ($ Users as $ User) {
echo $ User-> getName (). «(«. $ User-> getId (). «) N»
}

Одним из последних проектов, с которым вы можете столкнуться при обходе документации Propel, является Phing , инструмент сборки для PHP, который имеет много общего с Ant Java. То, что кто-то захочет написать Ant-подобный инструмент сборки для PHP (который уже включен в номера версий 2.x), является признаком того, что не все согласны с принципом, что PHP = только для небольших веб-сайтов…

Эти последние три проекта принадлежат разработчикам, связанным с Binary Cloud. Я считаю, что проект PHP-фреймворка, который я хотел бы раскрыть для себя больше всего (некоторые избираются этим, а остальные ищут ссылку «Скачать»). …).

Так что позитивные признаки грядущих событий. Если за этим лидерством последует больше PHP-проектов, обещание PHP5 «Enterprise Ready» станет реальностью.