Bağlamdan örnek yöntemi X çağrılmasını engellemek! = Y

1 Cevap php

Bu zor bir tanesidir.

Ben ZF önyükleme (yüzey görünümü) "taklit" duyuyorum. Neden, akademik ilgi onu aramak bana sormayın. Yani kendisi üzerinde dolaşır "init" öneki ile herhangi bir yöntem bulmak için bir yöntem "run" ile bir Bootstrap Özet var.

Uygulama, kullanıcı bu şekilde yöntemlerin herhangi bir sayısını tanımlar hangi bu sınıf uzanan bir kullanıcı tanımlı sınıf arar. Ancak, ben yine de istemci kodu için aynı komutu teşhir ederken, bu üst sınıf olduğu için "run" komutu edememek kullanıcı önlemek için istiyorum.

class Bootstrap_Abstract{
    protected final function run(){
    // if method exists that starts 'init' - execute the method
    }

}

class Bootstrap extends Bootstrap_Abstract(){
    public function initSomething(){
    //do something
    }

    //PREVENT THIS
    public function initRun(){
        $this->run();
    }

}

//application code, not exposed to user - changes in behaviour require changes in this code directly
 class Application(){
     $Bootstrap = new Bootstrap();//load user bootstrap
     $Bootstrap->run();
 }

1 Cevap

Belirli bir yöntem olarak adlandırılan "ne", debug_backtrace içine bakmak belirlemek için