La chiamata di una classe all’interno di un’altra classe in PHP

Ehi ci sono curioso di sapere come è fatto, come quando cerco il seguente codice all’interno di una funzione di una classe produce qualche errore di php che non posso prendere

public $tasks;
$this->tasks = new tasks($this);
$this->tasks->test();

Non so perché l’iniziazione della classe richiede $questo come parametro :S

grazie

class admin
{
    function validate()
    {
        if(!$_SESSION['level']==7){
            barMsg('YOU\'RE NOT ADMIN', 0);
            return FALSE;
        }else{
            **public $tasks;** //The line causing the problem
            $this->tasks = new tasks(); //Get rid of $this->
            $this->tasks->test(); //Get rid of $this->
            $this->showPanel();
        }
    }
}
class tasks
{
    function test()
    {
        echo 'test';
    }
}
$admin = new admin();
$admin->validate();
  • Che cosa è public $tasks; lì?
  • Ho pensato che era necessario per creare un oggetto di un’altra classe che la variabile è contenuta all’interno di pubblico, ma non so.
InformationsquelleAutor Supernovah | 2009-09-23

 

2 Replies
  1. 24

    Non è possibile dichiarare la pubblica $compiti all’interno della vostra classe del metodo (funzione). Se non hai bisogno di utilizzare le attività oggetto al di fuori di tale metodo, si può semplicemente fare:

    $tasks = new Tasks($this);
    $tasks->test();

    Avete solo bisogno di usare il “$this->” quando si usa una variabile che si desidera per tutta la classe.

    Le tue due opzioni:

    class Foo
    {
        public $tasks;
    
        function doStuff()
        {
            $this->tasks = new Tasks();
            $this->tasks->test();
        }
    
        function doSomethingElse()
        {
            //you'd have to check that the method above ran and instantiated this
            //and that $this->tasks is a tasks object
            $this->tasks->blah();
        }
    
    }

    o

    class Foo
    {
        function doStuff()
        {
            $tasks = new tasks();
            $tasks->test();
        }
    }

    con il tuo codice:

    class Admin
    {
        function validate()
        {
            //added this so it will execute
            $_SESSION['level'] = 7;
    
            if (! $_SESSION['level'] == 7) {
                //barMsg('YOU\'RE NOT ADMIN', 0);
                return FALSE;
            } else {
                $tasks = new Tasks();
                $tasks->test();
                $this->showPanel();
            }
        }
    
        function showPanel()
        {
            //added this for test
        }
    }
    class Tasks
    {
        function test()
        {
            echo 'test';
        }
    }
    $admin = new Admin();
    $admin->validate();
  2. 5

    Stai problema è con questa riga di codice:

    public $tasks;
    $this->tasks = new tasks();
    $this->tasks->test();
    $this->showPanel();

    Il public parola chiave viene utilizzata nella definizione della classe, non in un metodo della classe. In php, non hai nemmeno bisogno di dichiarare la variabile membro della classe, si può solo fare $this->tasks=new tasks() e viene aggiunto per voi.

Lascia un commento