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

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 03.08.2011, 20:30   #1
romantik2011
Форумчанин
 
Регистрация: 20.07.2011
Сообщений: 70
Репутация: 3
По умолчанию Не работает метод __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
Репутация: 3
По умолчанию

А почему только вот так сработало? Почему без внутреннего цикла не запахало и без всяких проверок и приведений типов?
Кто-нибудь подскажет как реализовать не так громоздко цикл форич?
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
Репутация: 1127
По умолчанию

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

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Эмуляция перегрузки в 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 14:44
Не работает метод GET Golovastik PHP 6 08.07.2010 22:40
Не работает метод Рунге - Кутта 2-го порядка CsandeRR Общие вопросы C/C++ 1 13.04.2010 16:27


15:18.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.