Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.08.2011, 20: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, 23: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, 23:55   #3
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

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

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

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


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