Codeignite Ответов: 1

Обратите внимание: неопределенная переменная: vars in C:\xampp\htdocs\joblisting\lib\template.php на линии 19


Пожалуйста, я новичок в PHP-среде.
Я хочу создать класс template.php но я получаю сообщение об ошибке

Что я уже пробовал:

//вот мой Template.php файл внутри папки lib

$template = $template;
}
публичная функция __get($key)
{
вернуть $это-&ГТ;$Варс клавишу [$]; / / получаю значение undefined переменной
}
публичная функция __set($key, $value)
{
return $this->$vars[$key] = $value; // я получаю неопределенную переменную
}
публичная функция __toString()
{
extract($this->$vars);
chdir(dirname($this->template));
ob_start();

включить базовое имя($this->template);
вернуться ob_get_clean();
}
}

?>


// вот мой init.php

Richard MacCutchan

Вы нигде не определили $vars.

Codeignite

Я заметил это, но я изменил код.

Я все еще получаю сообщения об ошибках
публичная функция __toString()
{
extract($this->vars, EXTR_PREFIX_SAME, "dup");
chdir(dirname($this->template));
ob_start();
включить базовое имя($this->template);
вернуться ob_get_clean();
}
// сообщения об ошибках в выводе
Предупреждение: chdir(): недопустимый аргумент (errno 22) в C:\xampp\htdocs\joblisting\lib\Template.php на линии 25

Предупреждение: include(): имя файла не может быть пустым в C:\xampp\htdocs\joblisting\lib\Template.php на линии 27

Предупреждение: include(): неудачное открытие " для включения (include_path='C:\xampp\php\PEAR') в C:\xampp\htdocs\joblisting\lib\Template.php на линии 27

Richard MacCutchan

Это другой код, и может показаться, что шаблон $this->не возвращает допустимое имя каталога. Вам нужно отладить свой код и проверить, какие именно значения возвращаются в переменных.

Codeignite

@Ричард MacCutchan я новичок в PHP я напечатал значение, которое он возвращает, используя вложенностями(), она возвращает bool(false в)

Richard MacCutchan

Пожалуйста, используйте Улучшить вопрос ссылка выше, добавьте фактический код, который вы используете, и вывод, который вы видите. И, пожалуйста, используйте теги <pre> вокруг вашего кода, чтобы он был четким и читаемым.

1 Ответов

Рейтинг:
1

Andre Oosthuizen

Вы не объявили $var в своем классе, поэтому он не может быть найден как ссылка.

Попробовать следующее -

<?php

  class MyClass {

    private $vars;

    public function __construct(Array $properties=array()){
      $this->vars = $properties;
//No dollar sign...
    }

    // magic methods!
    public function __set($property, $value){
      return $this->vars[$property] = $value;
    }

    public function __get($property){
      return array_key_exists($property, $this->vars)
        ? $this->vars[$property]
        : null
      ;
    }
  }

?>


Использование будет таким же -

// init call to the class name...
$foo = new MyClass(array("hello" => "world"));
$foo->hello;          // => "world"

// set: this calls __set()
$foo->invader = "Codeignite";

// get: this calls __get()
$foo->invader;       // => "Codeignite"

// attempt to get a data[key] that isn't set
$foo->invalid;       // => null