2017-01-13 16 views
-1

テーブルクラスでは、単純な関数だけでなく静的関数も使いたいのですが、どうすればいいですか? これは私の現在のコードです(動作しません)関数と静的メソッドの使用

私のコントローラでは、私はただしたい:check_table($table)を直接呼び出すTable::get('posts')

<?php 
namespace Fwk\ORM; 
use Fwk\Application; 
use Fwk\Database\Database; 

class Table extends Application { 

    public function __construct() 
    { 
     $this->db = new Database(); 
    } 

    public static function get($table) { 
     if($this->check_table($table)) { 
      return "ok"; 
     } 

    } 
    public function check_table($table) { 
     $r = $this->$db->query("SELECT 1 FROM $table"); 
     return $r; 
    } 

} 
?> 
+0

は、あなたが実際に**知っていますか? –

+0

現時点で静的な唯一の機能はgetですが、他の機能は数日後に追加されます。 – Darkh

+0

これは、実際には必要ない/静的メソッドをテスト可能ではないので使用しないでください。私の前の質問は**なぜ**静的メソッドが必要なのかということでした。あなたは自分自身に尋ねるべきです! –

答えて

0

を置くことを試みることができます。静的メソッドを宣言すると、本質的に「このメソッドは実際にクラスをインスタンス化せずに直接呼び出すことができます」と言います。静的メソッドを使用している間は、オブジェクトコンテキストではないので、$thisにアクセスすることはできません。

また、静的check_table()を作り、工場の一種としてそれを使用することができます:**あなたは、静的メソッドを必要とする理由

public static function get($table) { 
    if(self::check_table($table)) { 
     return "ok"; 
    } 

} 
public static function check_table($table) { 
    $r = (new Database())->query("SELECT 1 FROM $table"); 
    return $r; 
} 

http://php.net/manual/en/language.oop5.static.php

-1

あなたが正確に何static手段を理解する必要があり、 "自己:: MethodeName" の代わりに "this-> MethodeName"

関連する問題