__toString и числовые переменные

Тема в разделе "PHP", создана пользователем Ramazan, 21 сен 2009.

Модераторы: latteo
  1. Ramazan

    Ramazan пыщ-пыщ

    Регистр.:
    28 янв 2007
    Сообщения:
    471
    Симпатии:
    98
    имеется класс :
    PHP:
    class foo
    {
        private 
    $string;
        
        public function 
    __construct($var)
        {
            
    $this->string $var;
        }
        
        public function 
    __toString()
        {
            return 
    is_string($this->string) ? $this->string sprintf('%d'$this->string);
        }
    }
    Возникает проблема, если мы переменную не выводим, а скажем создаём условие

    PHP:
    $test = new foo(11);
    echo (
    $test == 11 'ok' 'bla');
    Сталкивался кто нибудь с такой дрянью, и есть ли решение?
     
  2. ewg777

    ewg777

    Регистр.:
    6 авг 2007
    Сообщения:
    763
    Симпатии:
    321
    Перейти по ссылке
    Перейти по ссылке
     
  3. Ramazan

    Ramazan пыщ-пыщ

    Регистр.:
    28 янв 2007
    Сообщения:
    471
    Симпатии:
    98
    Ничего нового я для себя по ссылкам не открыл. Суть проблеммы, в том, что даже если мы сделаем:
    PHP:
    $test = new foo(11);
    echo 
    $test// ошибок нет
    если так:
    PHP:
    $test = new foo('string');
    echo (
    $test == 'string' 'ok' 'bla'); // Ошибок нет 
    а вот так
    PHP:
    $test = new foo(11);
    echo (
    $test == 11 'ok' 'bla'); // Выдаёт ошибку 
    Пока вроде эту ошибку обхожу стороной, но уверен по мере написания кода она у меня обязателтьно появится.
     
  4. tostrss

    tostrss

    Регистр.:
    16 окт 2007
    Сообщения:
    771
    Симпатии:
    217
    Если тебе в сравнении не надо сравнивать по типу, то делай так
    PHP:
    echo ($test == '11' 'ok' 'bla'); 
     
  5. Ramazan

    Ramazan пыщ-пыщ

    Регистр.:
    28 янв 2007
    Сообщения:
    471
    Симпатии:
    98
    Дело в том, что такой способ пробовал и он не подходит
     
  6. ec_stasis

    ec_stasis Создатель

    Регистр.:
    5 июл 2010
    Сообщения:
    24
    Симпатии:
    3
    А с како целью это делается?

    Вот так будет работать:
    PHP:
    echo ((string)$test == 11 'ok' 'bla');
    echo ((string)
    $test == '11' 'ok' 'bla');