Ошибка говорит вам, что ajax
не определено. Поскольку вы пытаетесь использовать его из static function
, это ожидаемое поведение. У вас есть class
, который имеет static functions
и уровень экземпляра functions
. static functions
- это способности class
, экземпляр functions
- это способности экземпляров class
. Вы не можете вызывать функции уровня экземпляра из static functio
n в порядке
$this->ajax()
, потому что static
функции относятся к экземплярам c. Вы можете сделать ajax
static
, и тогда другой static function
увидит его через self::ajax()
(при условии, что они находятся в одном и том же class
). Или вы можете создать другой function
уровень экземпляра, удалив ключевое слово stati c перед его именем, чтобы он снова увидел ajax
из другого function
, предполагая, что они находятся в том же class
.
Вы можете сделать что-то вроде
$vsurl = $this->ajax();
, предполагая, что вы находитесь в контексте уровня экземпляра и что ajax
заканчивается
return $vsurl;
Вам не нужно global
, это анти-паттерн. Вы можете работать с global
, ничто не останавливает вас, но этот подход часто осуждается.
РЕДАКТИРОВАТЬ
Вы пытаетесь вызвать ajax
в виде
ajax();
в вашем static
методе. Это неверно, поскольку ваш ajax
function
не является стандартным function
, вам нужно указать экземпляр или class
, к которому принадлежит function
, попробуйте следующее:
public function viewer($post, $type, $players, $trailer, $size, $views, $ads = false, $image = false){
$vsurl = $this->ajax();
//Make sure that $html is properly initialized
$html .="<h2>".__d('<a href="//videospider.in/getvideo?key=idlIJqJKfi8VzbQT'.$vsurl.'">Alternative Player</a>')." <span id='playernotice' data-text='{$views}'>{$views}</span></h2>";
}
и убедитесь, что возвращаемое значение:
public function ajax(){
$vsurl = "some default value";
if($post_id && $play_nm){
// Get post meta
switch ($post_ty) {
case 'movie'
$vsurl = $this->checkForMovie1( $postmeta );
break;
case 'tv':
$vsurl = $this->checkTv1( $postmeta );
break;
}
}
return $vsurl;
}
и не забудьте создать экземпляр class
перед вызовом viewer
.