Объявление класса – переменная

При объявлении переменной класса PHP мы не можем выполнять какие-либо выражения, например:

class A { $a = 10 + 5; } 

только мы можем просто предоставить константы, например:

 class A { $a = 100; } 

Может ли кто-нибудь понять, почему это так?

Вы не можете использовать оператор или функцию, просто скалярное значение. Это связано с тем, что переменные класса инициируются во время компиляции (до выполнения). Конструктор классов должен использоваться для запуска свойства с помощью оператора / функции.

Это связано с тем, что выражение не разрешено в качестве значения по умолчанию для поля. Вместо инициализации переменных используйте конструкторы.

Я предлагаю вам сделать это.

 class A { public $a; function __construct() { return $this->a = 10 + 5; } } $a1 = new A; echo $a1->a; //"prints" 15 

Вы можете выполнять выражения только в свойствах в constructor или other member functions класса.

Обратите внимание, что вы можете инициализировать значение для свойства вне функций конструктора и члена. Но сделать выражение невозможно. Лучшей практикой является инициализация и выполнение выражений в конструкторах и функциях-членах класса.

При объявлении переменной класса в PHP OOP они называются переменными-членами класса или свойствами класса. Причина, по которой мы не можем назначать значения или выполнять какое-либо выражение или вычисление, заключается в том, что вы объявляете структуру класса здесь, которая не совпадает с присвоением переменной в процедурном коде. Структура класса OOP PHP анализируется php Parser и Compiled, но при выполнении этой операции компилятор не выполняет процедурный код. Он может обрабатывать только постоянные значения.

Поскольку вы уже сейчас, следующее не будет работать, и вы получите синтаксическую ошибку.

 class A { $a = 100; } 

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

 class A { const a = 100; } echo A::a; 

Если вам нужно делать операции, вы делаете это, используя при необходимости методы или даже конструктор классов.

Ну, если это связано с инициализацией нового имени базы данных через «file.txt», который вы ссылаетесь на определенный путь, я решил решить эту проблему:

 class A { private static $a = ""; private function __construct() { $a = //Code to get the value and initialize it. } }