Требуется ли CakePHP 2.0 по-прежнему объявлять $ name в модели?

#cakephp

#cakephp

Вопрос:

У меня создалось впечатление, что мы должны были объявить — public $name = ‘ModelName’; в модели исключительно для PHP4. Теперь, когда cakephp больше не поддерживает PHP4, я подумал, что в модели больше не требуется объявление $ name. В кулинарной книге все еще есть инструкции по его включению:http://book.cakephp.org/2.0/en/models.html

Насколько я вижу, модели прекрасно работают без этого. Для чего он используется и зачем мне это нужно?

Спасибо!

Комментарии:

1. Примечание. Вам также не нужно определять Model::name в CakePHP 1.3, если вы используете PHP 5 .

Ответ №1:

Это всего лишь остаток от предыдущих кулинарных книг. Смотрите, например http://book.cakephp.org/2.0/en/models/model-attributes.html#name в нем упоминается совместимость с PHP4, хотя CakePHP 2.0 больше не работает с PHP4.

Итак, чтобы ответить на ваш вопрос: нет, вам не нужно объявлять $name в ваших моделях.

Ответ №2:

вам не нужно $ name ни в одном из ваших классов. даже в 1.3 (кто все еще использует php4 в любом случае ^^), но особенно не в 2.0.

Я написал улучшенную оболочку обновления, которая удаляет эти ненужные фрагменты из всех файлов класса: http://cakephp.lighthouseapp.com/projects/42648/tickets/2117-improvements-for-20-upgrade-shell но эту новую команду я еще не добавил в исправление для заявки.

Я вызвал команду «name»

 /**
 * Remove name (lib, controller, model, view, component, behavior, helper, fixture)
 *
 * @return void
 */
public function name() {
    $libs = App::path('Lib');
    $views = App::path('views');
    $controllers = App::path('controllers');
    $components = App::path('components');
    $models = App::path('models');
    $helpers = App::path('helpers');
    $behaviors = App::path('behaviors');

    $this->_paths = array_merge($libs, $views, $controllers, $components, $models, $helpers, $behaviors);
    $this->_paths[] = TESTS . 'Fixture' . DS;

    if (!empty($this->params['plugin'])) {
        $pluginPath = App::pluginPath($this->params['plugin']);
        $this->_paths = array(
            $pluginPath . 'Lib' . DS,
            $pluginPath . 'Controller' . DS,
            $pluginPath . 'Controller' . DS . 'Component' .DS,
            $pluginPath . 'View' . DS,
            $pluginPath . 'View' . DS . 'Helper' . DS,
            $pluginPath . 'Model' . DS,
            $pluginPath . 'Model' . DS . 'Behavior' . DS,
            $pluginPath . 'Test' . DS . 'Fixture' . DS,
            $pluginPath . 'libs' . DS,
            $pluginPath . 'controllers' . DS,
            $pluginPath . 'controllers' . DS . 'components' .DS,
            $pluginPath . 'views' . DS,
            $pluginPath . 'views' . DS . 'helpers' .DS,
            $pluginPath . 'models' . DS,
            $pluginPath . 'models' . DS . 'behaviors' . DS,
            $pluginPath . 'tests' . DS . 'fixtures' . DS,
        );
    }

    $patterns = array(
        array(
            'remove var $name = ...;',
            '/bvars*$names*=s*(.*);/',
            ''
        ),
        array(
            'remove public $name = ...;',
            '/bpublics*$names*=s*(.*);/',
            ''
        ),
    );
    $this->_filesRegexpUpdate($patterns);
}