class — php синтаксическая ошибка неожиданная ‘)’

Я получаю эту ошибку в 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() разрешено внутри класса?

1

Решение

public $part = substr($this->file, 5, 2);

Выше не действительный синтаксис. От руководство:

Переменные-члены класса называются «свойствами». Они определяются с использованием одного из ключевых слов public, protected или private, за которым следует обычное объявление переменной. Это объявление может включать в себя инициализацию, но эта инициализация должна быть постоянным значением, то есть она должна быть в состоянии быть оцененной во время компиляции и не должна зависеть от информации времени выполнения для оценки.

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

Чтобы исправить это, вы можете инициализировать это значение внутри вашего конструктора:

public $part;

public function __construct() {
$this->part = substr($this->name, 5, 2)
}
3

Другие решения

Вы не можете иметь выражение (я) там.
Вы должны подать заявку substr() внутри __construct,

Также $this->file кажется, не определено нигде в вашем классе. Может быть, вы хотите это:

function __construct(){
$this->part = substr($this->name, 5, 2);
}
4

Вы не можете объявить выражение как значение по умолчанию.

0

Попробуйте применить 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();
?>
0
По вопросам рекламы [email protected]