[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: __toString кому не лень - поясните, а?
m4a1fox
Добрый день! Скажите, вот, есть такая функция в ООП __toString, исходя только из названия, я правильно понимаю, что она принимает массив, и переводит его в строку?



Спустя 3 минуты, 32 секунды (26.08.2011 - 10:49) linker написал(а):
Нет, она возвращает объект ввиде строки
class MyClass
{
public function __toString()
{
return 'Я экземпляр класса ' . get_class($this);
}
}


$obj = new MyClass();
echo $obj;

Спустя 3 минуты, 3 секунды (26.08.2011 - 10:52) m4a1fox написал(а):
linker
Цитата
она возвращает объект ввиде строки

Хм, но я же могу и так сделать

class MyClass
{
public function tring()
{
return 'Я экземпляр класса ' . get_class($this);
}
}


$obj = new MyClass();
echo $obj->tring();

Спустя 5 минут, 48 секунд (26.08.2011 - 10:58) linker написал(а):
Да, но ты не можешь сделать так
class MyClass
{
public function __toString()
{
return 'Я экземпляр класса ' . get_class($this);
}
}


function _print($var)
{
echo $var;
}

$str = 'А я строка';
$obj = new MyClass();
_print($str);
_print($obj);

Спустя 6 минут, 47 секунд (26.08.2011 - 11:05) m4a1fox написал(а):
linker
class MyClass
{
    public function tring()
    {
        return 'Я экземпляр класса ' . get_class($this);
    }
}


function _print($var)
{
    echo $var;
}

$str = 'А я строка';
$obj = new MyClass();
_print($str);
_print($obj->tring());

Спустя 1 час, 10 минут, 7 секунд (26.08.2011 - 12:15) linker написал(а):
Ок, раз так не хочешь, значит по другому :)
class A
{
public function __toString()
{
return 'Я экземпляр класса ' . get_class($this);
}
}


class B
{
public function __toString()
{
return 'А я вырос из класса ' . get_class($this);
}
}


function get()
{
switch(rand(1,3))
{
1 : return new A();
2 : return new B();
3 : return 'Я строка';
}
}


echo get();

Спустя 6 минут, 5 секунд (26.08.2011 - 12:21) m4a1fox написал(а):
linker
Ага! Тут отличия вижу! И все же, где в реальности это применяется? ЧИсто исходя из практики? Вы применяли это где нибудь?

Спустя 9 минут, 18 секунд (26.08.2011 - 12:31) linker написал(а):
Да, применяю, когда в определённых случая мне нужна пара Класс::Идентификатор дабы не заморачиваться строка там или объект, тупо echo.

Спустя 34 минуты, 54 секунды (26.08.2011 - 13:05) Guest написал(а):
$obj = new A();
$string = (string) $obj;
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.