Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 03.08.2011, 19:30   #1
romantik2011
Пользователь
 
Регистрация: 20.07.2011
Сообщений: 70
По умолчанию Не работает метод __call()

Попробовал написать такой код, не выводит все три параметра почему-то. Я имею ввиду, второго перегруженного метода с именем m().
PHP код:
<?php
class D{
function 
m($p1,$p2){
        for(
$i=0$i<count($p1); $i++)
        echo 
$p1[$i].' ';
        echo 
' '.$p2;
    }
function 
__call($n,$v)    {
        foreach(
$v as $z=>$f){
            echo 
$v' '.$f;
        }
    }

    
}
$x = new D;
$p = array("Динозавр","Аладин",954);
$g = array("Ура!");

$x->m($p,"2-ой параметр<br />");
$x->m($g,"Санчо","3-ий параметр<br />");

?>
romantik2011 вне форума Ответить с цитированием
Старый 03.08.2011, 22:04   #2
romantik2011
Пользователь
 
Регистрация: 20.07.2011
Сообщений: 70
По умолчанию

А почему только вот так сработало? Почему без внутреннего цикла не запахало и без всяких проверок и приведений типов?
Кто-нибудь подскажет как реализовать не так громоздко цикл форич?
PHP код:
<?php
class D{
function 
m($p1,$p2){
        for(
$i=0$i<count($p1); $i++)
        echo 
$p1[$i].' ';
        echo 
' '.$p2;
    }
    
function 
__call($n,$v)  {
        foreach(
$v as $f){
         if ((string)
$f == "Array")
             foreach(
$f as $v)
             {
                echo 
$v;
             }
          else echo 
$f.' ';
        }
    }
     
}
$x = new D;
$p = array("Динозавр","Аладин",954);
$g = array("Ура!");
 
$x->m($p,"2-ой параметр<br />");
$x->s($g,"Санчо","3-ий параметр");
 
?>
romantik2011 вне форума Ответить с цитированием
Старый 03.08.2011, 22:55   #3
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

PHP код:
if ((string)$f == "Array"
Клёвый изврат, про is_array(), наверное, вы и не слышали...

Начните с простого, с базового функционала - потом и ООП легче пойдет.

И эти ваши $p, $v, $f, $g, $x, m() - это будущий нечитабельный код в ваших проектах.
Andkorol вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Эмуляция перегрузки в PHP, метод __call() romantik2011 PHP 3 31.07.2011 11:36
Не работает метод SORT leonard Microsoft Office Excel 0 17.05.2011 12:18
TfrxReport - Метод DesignReport не работает l2qwe Компоненты Delphi 3 22.11.2010 13:44
Не работает метод GET Golovastik PHP 6 08.07.2010 21:40
Не работает метод Рунге - Кутта 2-го порядка CsandeRR Общие вопросы C/C++ 1 13.04.2010 15:27


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Здесь нужно купить рекламу за 7 тыс руб в месяц! )
пишите сюда - alarforum@yandex.ru
ИКС 840