Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Перегрузка PHP (https://javascript.ru/forum/server/19083-peregruzka-php.html)

romantik2011 25.07.2011 19:53

Перегрузка PHP
 
В этом коде, это переопределение в классах-потомках получается?
<?php 
class A{
public $t = 5;
protected $a = "<br>Алла<br>";
private	$b = "Петя";

public function s($x1){
	echo "Вызов родителя",$x1;
    echo $this->a,$this->b;	
	}

}

class B extends A{
public function s($x1){
parent::s(NULL);
	}
}

class C extends B{
public function s($x1){
echo $this->a;
	}
}

$obj = new B;
$obj->s(NULL);

$obj = new C;
$obj->s(NULL);
?>


Почему перегрузка не пашет?

romantik2011 03.08.2011 20:22

Попробовал написать такой код, не выводит все три параметра почему-то. Я имею ввиду, второго перегруженного метода с именем m().
<?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

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


Часовой пояс GMT +3, время: 09:41.