2011-12-19 6 views
2

Я родом из фона .net, поэтому пустые классы (модели), которые я вижу в литии, являются тревожными.
В .net, у меня нет собственности, если я что-то вроде:Свойства модели являются динамическими

public class MyClass() 
    public property myProp as string 
end class 

, а затем установить или получить свойство, как так:

dim aClass as myClass 
aClass.myProp = "some string" 
dim myString as String = aClass.myProp 

Что я вижу в Литий - это динамические объекты a la javascript.
Я могу объявить произвольный объект и добавить свойства, когда я иду. Теперь, я не говорю, что это плохо, я просто хочу знать:

  1. Если это нормально для PHP или нормальной для Lithium и
  2. Если добавить свойства (так что я могу получить завершение кода в eclipse), может ли это повредить функции ORM лития?
+0

Наслаждайтесь необходимостью изменять свой код при добавлении поля в базу данных! – psparrow

ответ

3

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

В литии, MyModel::create() или MyModel::find() объекты объекта-объекта или коллекции объектов сущности, которые представляют записи базы данных или документы.

Entity свойства хранятся в защищенных $_updated и $_data массивов и доступ к ним с помощью __get и __set методов.

Итак, когда вы ссылаетесь на $myModel->title, вы получаете/устанавливаете $myModel->_updated['title'].

Затем, когда вы вызываете $myModel->save(), данные в $_updated сохраняются в записи базы данных или документе.

Для получения более подробной информации см. https://github.com/UnionOfRAD/lithium/blob/master/data/Entity.php.

+0

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

+0

Право. Вы будете хотеть держаться подальше от него при работе с данными сущности. Наслаждайтесь работой с литием! – psparrow

+0

Вы не говорите это явно, но я думаю, что добавление свойств приведет к короткому замыканию отображения, которое делает Литий; ваши изменения не войдут в массив '$ _updated' и не будут сохранены в базе данных. Таким образом, добавление свойств вручную вызовет проблемы. – benzado

Смежные вопросы