PHP, başka bir sınıf içinde bir sınıf aramak

2 Cevap php

Hey orada ben bir sınıfın bir işlev içinde aşağıdaki kodu çalıştığınızda ben anlayamadım bazı php hata üretir gibi bu nasıl yapılır merak ediyorum

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

S: sınıfın başlatılması bir parametre olarak ya bu $ gerektirir neden bilmiyorum

teşekkürler

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();

2 Cevap

Eğer görevleri bu yöntemin dışında nesne kullanmak gerek yoksa sizin sınıfın yöntemi (function.) içindeki kamu $ görevleri ilan edemez, sadece yapabilirsiniz:

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

Sadece kullanmanız gerekir "$ this->" senin sınıfın boyunca kullanılabilir olmasını istediğiniz bir değişkeni kullanırken.

Sizin iki seçenek:

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();
    }

}

veya

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

kodunuzu:

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 fveya test
    }
}
class Tasks
{
    function test()
    {
        echo 'test';
    }
}
$admin = new Admin();
$admin->validate();

Siz sorun, bu kod satırı ile konum:

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

public anahtar kelime olmayan sınıfın bir yöntemde, sınıfının tanımı kullanılmaktadır. Php, hatta sınıfta üye değişken, sadece $this->tasks=new tasks() yapabilirsiniz bildirmek gerek yoktur ve sizin için eklenen alır.