Различие Symfony между <ModelName>.class.php и <ModelName> Table.class.php

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

можно установить различные объемы:

public string PropertyName { get; private set; }

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

С C#6 можно также создать верный readonly свойства - т.е. неизменные свойства, которые не могут быть изменены за пределами конструктора:

public string PropertyName { get; }

public MyClass() { this.PropertyName = "whatever"; }

Во время компиляции, который станет:

readonly string pName;
public string PropertyName { get { return this.pName; } }

public MyClass() { this.pName = "whatever"; }

В неизменных классах с большим количеством участников это сохраняет много избыточного кода.

9
задан j0k 4 August 2012 в 22:02
поделиться

2 ответа

Ваш файл Modelname.class.php содержит класс контейнера, например Post. Этот класс имеет все методы и свойства одной строки в вашей таблице, например, таблицы Post. Если у вас есть столбцы в таблице, такие как id, текст и т. Д., Вы сможете получить к ним доступ через класс Post.

Однако ваш PostTable (или класс XxxxxTable) - это ссылка table , это означает, что этот класс должен отвечать за запросы к таблице для получения данных.

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

Во-первых, вы бы сделали как $ post = Doctrine :: getTable ('Post') -> findOneById (1); Это делается из класса таблицы, потому что вы хотите извлечь некоторые данные из определенной таблицы.

Теперь у вас есть сообщение (как в объекте Post), потому что -> findOneById (...) запросил для вас базу данных. Затем вы можете отредактировать его, например, с помощью $ post-> title = "a nice title" . Наконец, сохраните сообщение с помощью $ post-> save (); .

Исключение составляют случаи, когда вы хотите получить связанные объекты, которые, например, могут быть ответами на ваше сообщение. Это будет сделано с помощью объекта, который вы уже вытащили в $ post .

Надеюсь, я ясно изложил свою точку зрения - если нет, не стесняйтесь задавать дополнительные вопросы.

Исключение составляют случаи, когда вы хотите получить связанные объекты, которые, например, могут быть ответами на ваше сообщение. Это может быть сделано с помощью объекта, который вы уже вытащили в $ post .

Надеюсь, я ясно изложил свою точку зрения - если нет, не стесняйтесь задавать дополнительные вопросы.

Исключение составляют случаи, когда вы хотите получить связанные объекты, которые, например, могут быть ответами на ваше сообщение. Это может быть сделано с помощью объекта, который вы уже вытащили в $ post .

Надеюсь, я ясно изложил свою точку зрения - если нет, не стесняйтесь задавать дополнительные вопросы.

2
ответ дан 3 November 2019 в 07:13
поделиться

XXX.class file holds Doctrine_Record descendant, which is intended to operate on a single record. Save, create, edit etc. XXXTable.class.php holds Doctrine_Table descendant, which is intended to operate on a whole table. Searching for records for example.

3
ответ дан 3 November 2019 в 07:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: