クラスの関数内で次のコードを試してみると、キャッチできないphpエラーが発生するため、これがどのように行われるのか疑問に思っています。
public $tasks;
$this->tasks = new tasks($this);
$this->tasks->test();
クラスの開始にパラメータとして$ thisが必要な理由もわかりません:S
ありがとう
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();
クラスのメソッド(関数)内でpublic $ tasksを宣言することはできません。そのメソッドの外部でtasksオブジェクトを使用する必要がない場合は、次のようにすることができます。
$tasks = new Tasks($this);
$tasks->test();
クラス全体で使用できるようにしたい変数を使用する場合にのみ、「$ this->」を使用する必要があります。
あなたの2つのオプション:
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();
}
}
または
class Foo
{
function doStuff()
{
$tasks = new tasks();
$tasks->test();
}
}
あなたのコードで:
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();
問題は次のコード行にあります。
_public $tasks;
$this->tasks = new tasks();
$this->tasks->test();
$this->showPanel();
_
public
キーワードは、クラスのメソッドではなく、クラスの定義で使用されます。 PHPでは、クラスでメンバー変数を宣言する必要はありません。$this->tasks=new tasks()
を実行するだけで、追加されます。