вызов другого метода oop

Печать RSS
182

L
Автор
Пришелец
0
Всем привет,вообщем вот хотел спросить,есть небольшой код
<?php
Class One {
	public function func_one($value) {
		return $value;
	}
}

$one = new One();

Class Two {
	public function func_two() {
		global $one;
		return $one->func_one('Hi guys');
	}
}

$two = new Two();

echo $two->func_two(); //result Hi guys
?>

Правильно ли я обращаюсь к методу один?нужно ли его вызывать способом global $one или это делается как-то по другому?
А

Оранжевые штаны
0
Лучше как то так
<?php 
Class One { 
    public function func_one($value) { 
        return $value; 
    } 
} 

$one = new One(); 

Class Two { 
    private $one;
    public function __construct($one) {
       $this->one = $one;
    }

    public function func_two() { 
        return $this->one->func_one('Hi guys'); 
    } 
} 

$two = new Two($one); 

echo $two->func_two(); //result Hi guys 
?> 
L
Автор
Пришелец
0
2. Муз-ТВ, а обязательно нужно его в construct ложить?
А

Оранжевые штаны
0
3. lolpetyaz, Не обязательно, главное не использовать global.
L
Автор
Пришелец
0
4. Муз-ТВ, тогда покажи как обратится без конструктора и глобала
R

Пришелец
0
5. lolpetyaz,

<?php  
Class One {  
    public function func_one($value) {  
        return $value;  
    }  
}  

$one = new One();  

Class Two {  
    private $one; 

    functuion __construct()
    {
        $this->one = new One;
    }

    public function func_two() {  
        return $this->one->func_one('Hi guys');  
    }  
}  

$two = new Two($one);  

echo $two->func_two(); //result Hi guys  
?> 
Или
<?php  
Class One {  
    public function func_one($value) {  
        return $value;  
    }  
}  

$one = new One();  

Class Two {  
    private $one; 

    public function func_two(One $one) {  
        return $one->func_one('Hi guys');  
    }  
}  

$two = new Two();  

echo $two->func_two($one); //result Hi guys  
?> 
Или
<?php  
Class One {  
    public function func_one($value) {  
        return $value;  
    }  
}  

Class Two extends One{  
    private $one; 

    public function func_two() {  
        return $this->func_one('Hi guys');  
    }  
}  

$two = new Two();  

echo $two->func_two(); //result Hi guys  
?> 
Или
<?php  
Class One {  
    public function func_one($value) {  
        return $value;  
    }  
}  

Class Two extends One{  
    private $one; 

    public function func_two() {  
        return $this->func_one('Hi guys');  
    }

    function __call($name, $arguments) {
        if (!method_exists($this, $name)) {
            $this->one = new One;
            call_user_func_array(array($this->one, $name), $arguments);
        }
    }
}  

$two = new Two();  

echo $two->func_two(); //result Hi guys  
?> 
L
Автор
Пришелец
0
6. Reflesh, Спасибо большое)
А

Оранжевые штаны
0
Или не заниматься ерундой:
function one($value){
  echo $value;
}

function two(){
  one('Hi guys');
}

Оранжевые штаны
0
Велосипедный станок мчится сбивая без оглядки стандарты с ног.

Господин ПЖ
0
Наследование и через $this->func_one($val); будет доступен
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск