Использование xPDO в функциях

Доброго Времени суток!
Поскольку еще не силен в php (но я стараюсь) столкнулся с проблемой и пока не нашел решения (может просто не могу правильно сформулировать вопрос всемогущему интернету).
Проблема такая: создал пользовательскую функцию в которой обращаюсь к xPDO, к примеру $user = $modx->user->get('id');, на что получаю ответ, что юзер не объект, а женщина не человек…
То есть внутри функции не получается обратиться к модели modx…
Конечно я понимаю, что это просто пробелы в моих знаниях, подскажите как решить или что прочитать на эту тему
Арсений
Арсений
27 января 2017, 08:38
modx.pro
2 498

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

Кирилл
27 января 2017, 11:51
в самом начале функции:

global $modx;
    Арсений
    27 января 2017, 11:54
    Так?
    function myfunction(){
    global $modx;
    $user = $modx->user->get('id');
    }
    Илья Уткин
    27 января 2017, 15:48
    Мне кажется, лучше передавать переменную $modx в функцию при вызове. Да, это несколько сложнее, но глобальные переменные стараются не использовать…
    function myfunction($modx){
        if (!$modx) return 'Error';
        $user = $modx->user->get('id');
    }
    myfunction($modx);
    but1head
    27 января 2017, 16:09
    Где угодно вставляем
    require_once('functions.php');
    $functions->test();
    Создаем файл
    $functions = new functions($modx);
    class functions {
    	public $modx;
    	function __construct(modX &$modx){
                    $this->modx =& $modx;
    		$this->pdoFetch = $this->modx->getService('pdofetch','pdoFetch', MODX_CORE_PATH . 'components/pdotools/model/pdotools/', array());
    	}
    
    	function test() {
    		// $this->modx->****
    	}
    
    }
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      6