Переменные в моделях CakePHP: как получить к ним доступ из другого контроллера? - PullRequest
0 голосов
/ 11 марта 2011

Я хочу сделать следующее:

У меня есть модель под названием «Управление»:

class Control extends AppModel {
    var $name = 'Control';
    var $myVariable:

    function getMyVariable() {
        $this->$myVariable = 'hello';
        return ($this->$myVariable);
    }
    function getMyVariable2() {
        $myVariable2 = 'hello';
        return ($myVariable2);
    }
}

Затем с другого контроллера я делаю:

class TestsController extends AppController {

var $name = 'Tests';
var $uses = array('Test','Control');

    function index() { //whatever }

    function doStuff() {
         $aux = $this->Control->getMyVariable(); //not working, variable not declared
         $aux2 = $this->Control->getMyVariable2(); //works
}

Я предположил (возможно, неправильно), что мог бы объявить переменную как свойство (или атрибут) в классе модели, как и в любом другом языке OO, и получить к нему доступ из других мест приложения, но, полагаю, этотак работать в CakePHP.Я что-то пропустил?Есть ли другой способ сделать это?Я имею в виду наличие в модели переменной (содержимое которой не берется из таблицы) и доступ к ней из других контроллеров / представлений?

1 Ответ

2 голосов
/ 11 марта 2011

$this->$myVariable - это синтаксис для «переменных переменных» (или в этом случае свойств переменных ).Правильный синтаксис: $this->myVariable.CakePHP не изменяет основы PHP OOP.

Установка переменной в геттере довольно странная вещь, однако вы не должны этого делать.
Кроме того, если вы используете геттеры,Вы должны сделать свойство protected или private, иначе это будет несколько бессмысленно.

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