& ldquo; вызов функции-члена updateJob () для null & rdquo;

std::string - эквивалент C ++: он изменен.

1
задан Martin 18 January 2019 в 13:25
поделиться

1 ответ

Что не так

 $this->jobManager->updateJob( $jobs, $data);

Вы говорите PHP:

"В классе $this посмотрите в объекте jobManager и запустить метод updateJob с этими переменными .... "

Но в [119 ] класс, который вы написали:

/**
 * Post manager.
 * @var JobManager
 */
private $jobManager;

Но у вас нигде не установлено jobManager как что-либо. У вас нет функции setter в классе, а также нет другой функции, устанавливающей, что на самом деле является переменной jobManager ... поэтому jobManager никогда не может быть ничем .

То, что вы в действительности делаете, говорит PHP

«В $ this class найдите в пустом пустом пространстве jobManager и запустите метод updateJob с этими переменными. .. "

Это явно не закончится хорошо.

Как это исправить

Вам нужно установить, что такое jobManager, прежде чем вы сможете его использовать, на что ссылается Xatenev . Обычно, когда вы создаете класс или используете метод Setter, если предпочтительнее.

ONE :

public function __construct(EntityManager $entityManager, JobManager $jobManagerVar)
{
    $this->entityManager = $entityManager;
    $this->jobManager = $jobManagerVar;
}

В качестве альтернативы - если метод ->jobManager необходимо определить после , объект IndexController создан; тогда вам нужно использовать класс Setter (потому что jobManager var равно *private*.

Таким образом TWO :

class IndexController extends AbstractActionController
{

...
    public function setJobManager($jobManagerVar){
        $this->jobManager = $jobManagerVar
    }

...
}

И затем, когда вы создаете экземпляр IndexController Вы можете сделать:

// ONE from above:
$theClass = new IndexController($entity,$jobManager);

или

// TWO from above
$theClass = new IndexController($entity);

...

$theClass->setJobManager($jobManger);

Существуют различные другие нюансы относительно методов установки значений в классах, я не собираюсь идти над всеми ними, это будет зависеть от того, что происходит в вашем более широком проекте.

0
ответ дан Martin 18 January 2019 в 13:25
поделиться
Другие вопросы по тегам:

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