Каркас для работы с базой данных - PullRequest
0 голосов
/ 20 марта 2012

Есть ли PHP-фреймворк, который позволяет мне писать такой код.

class Item
{
    private $_id; //primary key
    private $name;
    private $price;
    function __construct($name, $price) {
       $this->name = $name;
       $this->price = $price;
    }
}
...
$item = new Item(...);
db->Save($item);
...
db->Delete($item);
...
db->Update($item);
...
Item[] = db->Fetch($whereClause);

Да, администраторы, я искал в Google, но заблудился в огромном море (Doctrine, Propel, ActiveRecords, ..., задал другой вопрос о SO (что запрещало мне сравнивать), поэтому я спрашиваю по-другому, какая среда позволяет мне писать такой простой код, без большого дополнительного кодирования, без XML, YAML.Или дополнительно как написать такое если не там.Любые указатели будут полезны.Конечно, у меня есть PHP 5.3 и я могу использовать PDO, но производительность - это проблема (волшебные функции ...), а не обширный список возможностей (мы также поддерживаем эту вещь, которую вы никогда не будете использовать).

OOPS : забыл добавить, не хочу фреймворк, такой как CakePHP и т. Д. Я пишу простой php без фреймворков, хочу просто несколько библиотек, которые я могу включить в свой проект и вызватьприведенный выше синтаксис.Это нормально для меня, если он требует немного SQL позади.

Ответы [ 5 ]

1 голос
/ 20 марта 2012

php-activerecord , вероятно, будет соответствовать вашим потребностям. Классы моделей должны расширяться от ActiveRecord\Model:

<?php
class City extends ActiveRecord\Model {
  // Table name will be defaulted to 'cities', but you can override it
  static $table_name = 'mycities';

  // Primary key will be defaulted to 'id', you can override it too
  static $primary_key = 'city_id';

  // Associations
  static $belongs_to = array(
    array('country')
  );

  static $has_many = array(
    array('citizens', 'class_name' => 'User')
  );
}

// Creating
$city = new City(array('name' => 'New York'));
$city->save();

// Find City with id=5, output some data
$anotherCity = City::find(5);
echo $anotherCity->country->location;
foreach ($anotherCity->citizens as $citizen) {
  echo $citizen->full_name;
}

Это очень простой пример, у php-activerecord есть несколько приятных особенностей:

  • Разумные соглашения , вы можете уменьшить количество кода, следуя им (на самом деле, вы должны следовать им, если вы начинаете с нуля)
  • Проверки для обеспечения соблюдения бизнес-правил
  • CRUD для манипулирования объектами в OO-way
  • Обратные вызовы - расширенные фрагменты кода, связанные с различными событиями жизни ваших моделей
1 голос
/ 20 марта 2012

Если вам не нужна полная инфраструктура приложения, например, вы, возможно, написали свою собственную инфраструктуру или если вы не используете какую-либо инфраструктуру, я не могу рекомендовать Redbean .С другой стороны, у Redbean есть мосты для таких сред, как Zend и CodeIgniter.

Мне нравится Redbean, потому что он не требует большой конфигурации, никаких YAML, XML или другой конфигурации.Библиотека очень легкая и довольно производительная.Количество функций примерно «правильное», лишних функций нет, но у вас есть все, что вам нужно.Синтаксис также очень близок к тому, который вы хотите.

Теперь обратная сторона: вам нужно придерживаться строгих структур таблиц .Например, столбец идентификатора необходим для таблиц ссылок.Поддержка префиксов имен таблиц также была удалена в 3.0.Тем не менее, я не считаю эти вещи важными, поэтому для меня это не является большой проблемой.

Если это так, вы можете даже раскошелиться на библиотеку и изменить ее под свои нужды.

0 голосов
/ 20 марта 2012

Есть много рамок.См. this для примера.

У каждого фреймворка есть свой собственный API, с помощью которого вы можете использовать множество функций, таких как db, xml.

  1. Только для ORM Doctrine очень превосходно
  2. Для быстрой разработки и создания лесов Codeigniter очень хорош.
  3. Для всесторонней инфраструктуры со многими встроенными библиотекамиZend-Framework является одним из лучших. В нем также есть библиотеки для Доктрины.
0 голосов
/ 20 марта 2012

торт PHP очень близко к вашим требованиям поиск сворачивание с тортом PHP очень близко к вашему требованию

Спасибо

0 голосов
/ 20 марта 2012

Я думаю, что их много.ZendFramework - одна из таких платформ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...