PHP5에서 OOP에 대한 질문이 있습니다. 다음과 같이 작성된 코드가 점점 더 많아졌습니다.PHP5에서 다중 oop 함수를 빌드하는 방법
$object->function()->first(array('str','str','str'))->second(array(1,2,3,4,5));
그러나이 방법을 만드는 방법을 모르겠습니다. 나는 여기서 누군가가 나를 도울 수 있기를 바랍니다. 0) 고마워요.
PHP5에서 OOP에 대한 질문이 있습니다. 다음과 같이 작성된 코드가 점점 더 많아졌습니다.PHP5에서 다중 oop 함수를 빌드하는 방법
$object->function()->first(array('str','str','str'))->second(array(1,2,3,4,5));
그러나이 방법을 만드는 방법을 모르겠습니다. 나는 여기서 누군가가 나를 도울 수 있기를 바랍니다. 0) 고마워요.
자신의 클래스에서와 같은 메소드를 연결하는 열쇠는 객체를 반환하는 것입니다 (거의 항상 $this
). 그러면 다음 메소드 호출을위한 객체로 사용됩니다.
과 같이 :
class example
{
public function a_function()
{
return $this;
}
public function first($some_array)
{
// do some stuff with $some_array, then...
return $this;
}
public function second($some_other_array)
{
// do some stuff
return $this;
}
}
$obj = new example();
$obj->a_function()->first(array('str', 'str', 'str'))->second(array(1, 2, 3, 4, 5));
주, 그것은 $this
이외의 객체를 반환하는 것이 가능하고, 체인 물건 위 정말 $a = $obj->first(...); $b = $a->second(...);
말을 짧은 방법을 뺀 설정 변수의 추함 당신은거야 통화 후 다시 사용하지 마십시오.
다만 FYI [PHP 방법 체인?]이 기술이 사용되는 유창한 인터페이스 (http://en.wikipedia.org/wiki/Fluent_interface)를 만드십시오. –
흠? 모든 것이 정상적으로 처리 될 것인가? :) – ParisNakitaKejser
@Dennis Haarbrink : 이름이 내 마음을 어지럽게했다. 고마워요 :) – cHao
$object->function()->first(array('str','str','str'))->secound(array(1,2,3,4,5));
이 엄격 유효 PHP하지 않습니다,하지만이 자체가하는 당신이 방법은 어떤 또한 first()
라고 호출하는 객체를 반환 ... 당신은 $ 객체 클래스의 메소드를 호출한다 말하고있다 second()
이라는 메서드를 호출하는 개체를 반환합니다.
따라서 하나의 방법으로이 클래스가 반드시 하나의 클래스 일 필요는 없습니다.이 클래스는 일 수도 있고 클래스가 될 수도 있습니다.
같은 :
가class AnotherClass {
public function AnotherClassMethod() {
return 'Hello World';
}
}
class MyClass {
public function MyClassMethod() {
return new AnotherClass();
}
}
$object = new MyClass();
echo $object->MyClassMethod()->AnotherClassMethod(); // Hello World
가능 중복 (http://stackoverflow.com/questions/3724112/php-method-chaining) – dynamic