При объявлении переменной класса PHP мы не можем выполнять никаких выражений, например:
class A
{
$a = 10 + 5;
}
только мы можем просто предоставить константы, например:
class A
{
$a = 100;
}
Кто-нибудь знает, почему это так?
При объявлении переменной класса 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.
}
}