PHP OOP içinde işlevini nasıl erişilir

3 Cevap php

Ne benim işlevi innerOne içinde bu-> iki () $ aramak için ne yapmak gerekiyor? Bu PHP OOP ile mümkün mü?

İşte recieving am hata var:

Fatal error: Using $this when not in object context

İşte benim kod nasıl göründüğü:

class myClass  {

    function one(){

        function innerOne() {
            // Some code
            $this->two($var1, $var2);
        }

        // Some code

        innerOne();

    }

    function two($var1, $var2) {
    // Does magic with passed variables
        return $var1 . $var2;
    }


}

3 Cevap

Bu deneyin:

function innerOne($t) {
  //some code...
  $t->two($var1, $var2);
}

innerOne($this);

innerOne aslında küresel bir fonksiyonudur.

Eğer bir yöntem içine tanımlanmış gerçeği Küresel işlev tablosunda var, önemli değil. Bkz:

class myClass  {

    static function one(){

        function innerOne() {
            // Some code
            echo "buga!";
        }


    }
}

myClass::one();

innerOne();

"Buga!" verir. Sen fonksiyonu tanımlanır böylece ilk bir () aramak zorunda.

Ne istediğiniz şudur:

class myClass  {

    function one($var1, $var2){
        return $this->innerOne($var1, $var2);
    }

    private function innerOne($var1, $var2) {
        return $this->two($var1, $var2);
    }

    function two($var1, $var2) {
    // Does magic with passed variables
        return $var1 . $var2;
    }


}

$var = new myClass();
echo $var->one("bu","ga");

Bu fonksiyon yalnızca o kapsamda tanımlanmıştır. Yani dışarıda erişemez kapsamı dedi. Orada hileler onun etrafında ama hiçbir tavsiye edeceğim.