2017-11-14 13 views
2

私はクラスメソッド内で関数を呼びたいと思いますが、このスクリプトを作成しましたが、できる限り機能しません。クラスメソッド内で関数を呼び出すにはどうすればよいですか

Fatal error: Call to a member function function2() on null in /.../.../index.php on line 12

public static function table($name_t, callable $callback){ 
    self::databaseConnection(); 
    try { 

     $matches = array(
      ..... 
     ); 


     function engine($var){ 
      Gaia::$engine__ = $var[0]; 
     } 

     $eng = new Table_call; 
     echo $eng; 


     $callback($matches); 

     if(isset(self::$s)){ 
      //self::$instance->exec("CREATE TABLE IF NOT EXISTS ".$name_t."(".trim(self::$s,',').") ENGINE=MyISAM DEFAULT CHARSET=utf8;"); 

      echo "Dump Success!<br> ".self::$engine__ ; 
     } 

     //return $bgj; 
    } catch (Exception $e) { 
     self::$instance = null; 
     echo ("Oh noes! There's an error in the query: ". $e); 
    } 

} 

クラスファイル2

class Table_call extends Gaia{ 

    public function __call($name,$arg){ 
     call_user_func($name,$arg); 
    } 
} 

インデックスファイル

Gaia::table('test', function($table){ 
    $table['autoIncrement']('id'); 
})->engine('MyISAM'); 

どのように私は機能をこのように追加することができます?

" ->function2('hello') "? 
+0

静的関数静的なものではないが、 'を通じて::'要求する必要があります関数は '$ this->'で要求される必要があります。だからあなたの場合は、 'self :: function();'静的でない関数にするなら '$ this-> function();'になります。これはあなたを助けるだろうか?いくつかの追加の説明:https://stackoverflow.com/questions/1417438/what-are-static-and-dynamic-variables-methods-in-oop –

+0

PHPコードをエコーし​​ようとするところで、HTMLコード全体を投稿できますか? –

+0

ok申し訳ありません。 –

答えて

0

これがあなたが望むものなのかどうかわかりませんが、これは私ができる最小の例です。あなたが投稿したコードにfunction2が存在しないので、正確に何をしようとしているのか、あなたの質問では私には分かりません。だから私はそれが何であるかを推測しなければなりません。とにかく...

<?php 
class Gaia{ 
    public static function table(){ 
     return new Table_call(); 
    } 
} 

class Table_call extends Gaia{ 

    public function function2(){ 
     echo __METHOD__; 
    } 

} 

Gaia::table()->function2(); 

ここで試すことができます。

http://sandbox.onlinephpfunctions.com/code/dd1c5db302448e8f075a081acfc33cb00c3f71b5

あなたは上の第2の機能を呼び出すために任意のオブジェクトを返さない、あなたのコードを見てみます。デフォルトの戻り値の型がそうNULLある

Fatal error: Call to a member function function2() on null in /.../.../index.php on line 12

あなたのエラーまた、このようにそれについて

$var = Gaia::table(); 
//var is an instance of Table_call 
$var->function2(); 

を考えて...

関連する問題