Ссылочность в РНР4

Vallar_ultra

Любитель выпить :)
Ссылочность в РНР4

Товарищи, я что-то перестал понимать в этой жизни. Определенно, ибо твориться какой-то бред.
PHP Version 4.4.1
Вобщем вот такой тестик:
PHP:
class a{
	var $a;
	function a($a){
		$this->a = $a;
	}
	
	function b(&$b){
		$b = &$this->a;
	}
}
$b = '';
$test = new a('a');
$test->b($b);
$b = 'b';
var_dump($test->a);
А вопрос в следующем: какого при вызове метода "b()" экземпляра класса "а" с передачей по ссылке переменной $b, этой самой переменной не присваивается значением ссылка на свойство ???

-~{}~ 13.02.07 16:08:

Аууу, дайте мож хоть ссылку на описание подобных проблем и путей их решения.... а то как-то совсем грустно :(
 

nehochuha

Новичок
Re: Ссылочность в РНР4

Хм...тоже не пойму почему так! Тоже очень хотел бы узнать!
Причем не только в PHP4 но, также, и в PHP5 (в 5.1.6 в частности)
Дело не только в классах но и в функциях

PHP:
function f2(&$b)
{
	global $a;
	$b = &$a;	
}

$a ='you';
f2($b);
echo $b;
echo "<HR>";

$b ='me';
echo $a;
echo "<HR>";
Вывод:
Т.е, получается, что если делать переменную-ссылку еще раз ссылкой на другой объект связь теряется.
Может это нормально? :)
 

Андрейка

Senior pomidor developer
если я не ошибаюсь, то эт написано в мануале напротив - "ссылки не указатели, вашу тудыть налево"
 

nehochuha

Новичок
Автор оригинала: Андрейка
если я не ошибаюсь, то эт написано в мануале напротив - "ссылки не указатели, вашу тудыть налево"
Там сказано, что надо воспринимать их как hard-link в Linux т.е перменные не содержат адрес, а просто используют одну область памяти.
Я думаю, это нормально...
 

Vallar_ultra

Любитель выпить :)
Андрейка
Указатели в четвёрке как я помню не реализованы, аль я заблуждаюсь?
 

nehochuha

Новичок
Автор оригинала: Vallar_ultra
Андрейка
Млин, точно! пора заканчивать пользовать в параллель C#
Указатели в четвёрке как я помню не реализованы, аль я заблуждаюсь?
Можно я отвечу...
указатели не реализованы и не будут в PHP да и вообще в скриптовых языках - не нужны.
 

Vallar_ultra

Любитель выпить :)
nehochuha
Уф, а то я уж думал что совсем ушёл от ПХП..... :)

А насчёт ненужности, вот если мне надо чтоб функция возвращала ссылку на что-либо, как это реализовать?
 

nehochuha

Новичок
Автор оригинала: Vallar_ultra
nehochuha
Уф, а то я уж думал что совсем ушёл от ПХП..... :)

А насчёт ненужности, вот если мне надо чтоб функция возвращала ссылку на что-либо, как это реализовать?
Путей очень много. Например
PHP:
function &f1(<params>)
{
  <code>
}
-~{}~ 13.02.07 18:53:

Автор оригинала: Андрейка
Vallar_ultra
нинаю.. вон там знающие люди подсказывают.. я лишь процитировал по памяти

nehochuha
заставляешь мну лезть в мануал вместо тебя
http://ru.php.net/manual/ru/language.references.arent.php
Если изволете почитать что я писал, пойметн, что я вам не противоречил :)
 

Vallar_ultra

Любитель выпить :)
nehochuha
О, пасиба, кажись помогло от крупнотоннажного геморроя :) А теоретический вопрос всё-таки остаётся :)
 

Alexandre

PHPПенсионер
Указатели в четвёрке как я помню не реализованы, аль я заблуждаюсь?
Указатели как переменные не реализованы. Реализованы только ссылки на метод. Организация вызовов методов осуществляется не через указатель, в его классическом понимании, а через хеш-таблицу. Соответственно реализация ссылки - это есть значение переменной из этой хеш-таблицы.
 

tony2001

TeaM PHPClub
>Указатели в четвёрке как я помню не реализованы, аль я заблуждаюсь?
указатели - в C.
а мануал - на php.net.
 

Андрейка

Senior pomidor developer
nehochuha
ты писал примерно следующее "тоже не пойму почему так! Тоже очень хотел бы узнать!" и чета про какие-то хардлинкс в каком то юниксе.. хотел - узнал
 
Сверху