Я получаю эту ошибку в php. Я пытаюсь использовать substr в классе.
Вот мой код:
<?php
Class Test{
public $name = "for testing only";
public $part = substr($this->name, 5, 2);
public function show() {
echo $this->part;
echo $this->name."\n";
}
public function change($data) {
$this->name = $data;
}
}
$myTest = new Test();
$myTest->show();
$myTest->change("something else");
$myTest->show();
?>
Aptana выделяет (и первое в строке 4) и сообщает мне «синтаксическая ошибка».
Netbeans выделяет всю строку 4 и говорит мне
неожиданный: (ожидается =>, ::, ‘, `, OR, XOR и многое другое.
Когда я запускаю код как PHP-скрипт с помощью меню Aptana Run, появляется сообщение об ошибке:
Ошибка разбора: синтаксическая ошибка, неожиданный ‘(‘, ожидающий ‘,’ или ‘;’ в
C: \ путь \ к \ файлу \ test.php в строке 4
Когда я меняюсь $this->name
в $name
Аптана только подчеркивает (
Когда я использую этот код из интерактивного режима в Windows, кажется, работает:
Interactive mode enabled
<?php $name = "for testing only";
$part = substr($name, 5, 2);
echo $name; echo $part;
?>
^Z
for testing onlyes
Кто-нибудь знает, что я делаю не так? Является substr()
разрешено внутри класса?
public $part = substr($this->file, 5, 2);
Выше не действительный синтаксис. От руководство:
Переменные-члены класса называются «свойствами». Они определяются с использованием одного из ключевых слов public, protected или private, за которым следует обычное объявление переменной. Это объявление может включать в себя инициализацию, но эта инициализация должна быть постоянным значением, то есть она должна быть в состоянии быть оцененной во время компиляции и не должна зависеть от информации времени выполнения для оценки.
Другими словами, значением этого свойства может быть только целое число, число с плавающей запятой, строка, логическое значение или пустой массив. Выражения не допускаются.
Чтобы исправить это, вы можете инициализировать это значение внутри вашего конструктора:
public $part;
public function __construct() {
$this->part = substr($this->name, 5, 2)
}
Вы не можете иметь выражение (я) там.
Вы должны подать заявку substr()
внутри __construct
,
Также $this->file
кажется, не определено нигде в вашем классе. Может быть, вы хотите это:
function __construct(){
$this->part = substr($this->name, 5, 2);
}
Вы не можете объявить выражение как значение по умолчанию.
Попробуйте применить substr в конструкторе.
Также $this->file
дает мне Undefined property: Test::$file in - on line 7
так как это не определено …
<?php
Class Test{
public $name = "for testing only";
public $part;
function __construct() {
$this->part = substr($this->file, 5, 2);
}
public function show() {
echo $this->part;
echo $this->name."\n";
}
public function change($data) {
$this->name = $data;
}
}
$myTest = new Test();
$myTest->show();
$myTest->change("something else");
$myTest->show();
?>