Using $this when not in object context в php 7.2

D
На сайте с 28.06.2008
Offline
1108
1381

Подскажите пожалуйста как теперь в php 7.2 нужно писать вместо $this?

Код ниже нормально работает на 7.0, но на 7.2 выдает

Using $this when not in object context

без указания строки.

<?php

ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
defined('_JEXEC') or die('Restricted access'); // no direct access
header("X-Frame-Options: SAMEORIGIN");
$db = JFactory::getDBO();
$app = JFactory::getApplication();
$doc = JFactory::getDocument();
$user = JFactory::getUser();
$menu = JSite::getMenu();

$this->language = $doc->language;
$this->direction = $doc->direction;

// Getting params from template
$params = $app->getTemplate(true)->params;

// Detecting Active Variables
$option = $app->input->getCmd('option', '');
$view = $app->input->getCmd('view', '');
$layout = $app->input->getCmd('layout', '');
$task = $app->input->getCmd('task', '');
$itemid = $app->input->getCmd('Itemid', '');
$sitename = $app->get('sitename');

// Удаляем лишнее
unset($this->_generator);

// Output as HTML5
$doc->setHtml5(true);

#
#
#

$doc->addStyleSheet($this->baseurl . '/templates/' . $this->template .'/css/template.css');
$doc->addStyleSheet($this->baseurl . '/templates/' . $this->template .'/css/simplemodal.css');

// add jQuery in top
$jquery = array("/templates/packer/js/jquery-1.8.1.js" => array(
"mime" => "text/javascript",
"defer" => "",
"async" => ""
));
$this->_scripts = array_merge($jquery, $this->_scripts);

$doc->addScript($this->baseurl . '/templates/' . $this->template . '/js/jquery.simplemodal.js');
$doc->addScript($this->baseurl . '/templates/' . $this->template . '/js/modal.js');
$doc->addScript($this->baseurl . '/templates/' . $this->template . '/js/main.js');
$doc->addScript($this->baseurl . '/templates/' . $this->template . '/js/async.js');

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>">
<html>
webiumpro
На сайте с 20.03.2017
Offline
39
#1

Так вы же пытаетесь использовать $this вне класса. Может я не знаю всех тонкостей вашего движка (или что вы используете), но в приведенном коде я не вижу никаких упоминаний о классе, в методах которого обычно вызывается $this. И возможно я ошибаюсь, но не припомню, чтобы так вообще можно было делать в какой-либо версии php.

Можете почитать про это здесь

Копирование лендингов. Разработка на фреймворке сервисов. Создание сайтов (/ru/forum/994418)
Joker-jar
На сайте с 26.08.2010
Offline
166
#2

Надо копать в том месте, где инлудится этот скрипт.

D
На сайте с 28.06.2008
Offline
1108
#3

Это index.php шаблона Джумлы 3,8 (чуток измененный под себя)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий