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

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

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

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

global $modx;
    Арсений
    27 января 2017, 11:54
    0
    Так?
    function myfunction(){
    global $modx;
    $user = $modx->user->get('id');
    }
      Кирилл
      27 января 2017, 11:57
      0
      Верно.
        Арсений
        27 января 2017, 12:07
        0
        Спасибо, Добрый человек!
      Илья Уткин
      27 января 2017, 15:48
      1
      +2
      Мне кажется, лучше передавать переменную $modx в функцию при вызове. Да, это несколько сложнее, но глобальные переменные стараются не использовать…
      function myfunction($modx){
          if (!$modx) return 'Error';
          $user = $modx->user->get('id');
      }
      myfunction($modx);
      but1head
      27 января 2017, 16:09
      2
      +2
      Где угодно вставляем
      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