powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Only variables should be passed by reference php
6 сообщений из 6, страница 1 из 1
Only variables should be passed by reference php
    #39151199
Фотография giigro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем!

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
<?php
class cparent{
	public $var1;
	public function __construct(){
        $this->var1 = 1;
    }
}
class cchild extends cparent{
	public function __construct(){
    	parent::__construct();	
    }
    public function getVar1(){
    	return $this->var1;
    }
    private function some_mysqli_func(){
    	if (!$stmt = $this->mysqli->prepare("INSERT INTO bla(var) VALUES (?)")){
				echo 'Error: ' . $this->mysqli->error;
	  			return false;
  		}
		$stmt->bind_param('i', $this->var1);
		$stmt->execute();
    }
}
$child = new cchild();
echo $child->getVar1(); //ок
$child->some_mysqli_func(); // здесь ругань Only variables should be passed by reference php
?>


По ходу внутри класса cchild переменная от родительского класса воспринимается как константа.
Как обойти такое без создания новых переменных? Спасибо заранее
...
Рейтинг: 0 / 0
Only variables should be passed by reference php
    #39151385
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
giigroПривет всем!

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
<?php
class cparent{
	public $var1;
	public function __construct(){
        $this->var1 = 1;
    }
}
class cchild extends cparent{
	public function __construct(){
    	parent::__construct();	
    }
    public function getVar1(){
    	return $this->var1;
    }
    private function some_mysqli_func(){
    	if (!$stmt = $this->mysqli->prepare("INSERT INTO bla(var) VALUES (?)")){
				echo 'Error: ' . $this->mysqli->error;
	  			return false;
  		}
		$stmt->bind_param('i', $this->var1);
		$stmt->execute();
    }
}
$child = new cchild();
echo $child->getVar1(); //ок
$child->some_mysqli_func(); // здесь ругань Only variables should be passed by reference php
?>


По ходу внутри класса cchild переменная от родительского класса воспринимается как константа.
Как обойти такое без создания новых переменных? Спасибо заранее

Не там ошибку ищещь. Переменная родительского класса в потомке тоже переменная!!!
А озвученная ошибка возникает, когда ты в функцию, принимающую ссылку, отправляешь не переменную, а значение/результат функции.

То есть в пхп с какой-то версии (не помню с какой) данная ошибка возникнет на такой конструкции
Код: php
1.
2.
3.
if(empty(getSomeArray())){
  // ...
}



хотя вот так ошибки уже не будет:
Код: php
1.
2.
3.
4.
$a = getSomeArray();
if(empty($a)){
  // ...
}
...
Рейтинг: 0 / 0
Only variables should be passed by reference php
    #39151405
Фотография giigro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так тоже не работает:

...
$var2 = $this->var1;
$stmt->bind_param('i', $var2);
...
...
Рейтинг: 0 / 0
Only variables should be passed by reference php
    #39151446
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
giigroТак тоже не работает:

...
$var2 = $this->var1;
$stmt->bind_param('i', $var2);
...

ПрограмёрНе там ошибку ищещь
...
Рейтинг: 0 / 0
Only variables should be passed by reference php
    #39151453
Фотография giigro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПрограмёрgiigroТак тоже не работает:

...
$var2 = $this->var1;
$stmt->bind_param('i', $var2);
...

ПрограмёрНе там ошибку ищещь

Поясни, что имеешь в виду.
Единственная вложенность здесь - это $stmt->bind_param('i', $this->var1), но я это исправил и не помогло.
...
Рейтинг: 0 / 0
Only variables should be passed by reference php
    #39151455
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а зачем геттер для публичной переменной и метод приватный (очепятка?), да и в if заглянуть можно
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Only variables should be passed by reference php
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]