Проверьте, была ли переменная инициализирована в переполнении стека

Я реализовывал плагин WordPress, и я столкнулся с проблемой выяснения, была ли объявлена ​​переменная или нет.

скажем, у меня есть модель с именем «Привет».
эта модель имеет 2 переменные: hello_id и hello_name.
Теперь давайте предположим, что в базе данных у нас есть таблица с именем ‘hello’ с 3 столбцами: ‘hello_id’, ‘hello_name’, ‘hello_status’. Теперь я хотел бы проверить, была ли объявлена ​​переменная, и если да, то установите значение.

код

class Hello extends MasterModel{
public $hello_id;
public $hello_name;
function __construct($hello_id = null)
{
if ($hello_id != null){
$this->hello_id = $hello_id;
$result = $wpdb->get_row(
"SELECT * FROM hello WHERE hello_id = $hello_id", ARRAY_A);
$this->setModelData($data);
}
}
}
abstract class MasterModel {
protected function setModelData($data)
{
foreach($data as $key=>$value){
if(isset($this->{$key})){ // need to check if such class variable declared
$this->{$key} = $value;
}
}
}
}

Основная причина, по которой я это делаю, заключается в том, чтобы сделать мой код расширяемым в будущем. например, я не могу использовать некоторые поля формы базы данных, но в будущем они могут мне понадобиться.

большое спасибо

Один из вас

0

Решение

Вы можете использовать несколько вариантов

//this will return true if $someVarName exists and it's not null
if(isset($this->{$someVarName})){
//do your stuff
}

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

property_exists возвращает true, даже если значение равно нулю

if(!property_exists($this,"myVar")){
$this->{"myVar"} = " data.."}
2

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

Используйте isset http://php.net/manual/en/function.isset.php

if(isset($var)){

//do stuff

}
0

По вопросам рекламы [email protected]