2017-11-14 5 views
2

Ich möchte eine Funktion innerhalb einer Klassenmethode aufrufen, habe ich dieses Skript erstellt, aber nicht funktionieren, wie ich es tun kann? Wie kann ich eine Funktion innerhalb einer Klassenmethode aufrufen

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

} 

Klasse Datei 2

class Table_call extends Gaia{ 

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

Index-Datei

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

wie kann ich funktionieren auf diese Weise hinzufügen ??

+0

Statische Funktionen angefordert werden muss, durch '' ::, während nicht statisch Funktionen müssen mit '$ this->' angefordert werden. In Ihrem Fall wäre es also "self :: function();" Wenn Sie es zu einer nicht statischen Funktion machen, wäre es '$ this-> function();'. Wird dir das helfen? Einige zusätzliche Erklärung: https://stackoverflow.com/questions/1417438/what-are-static-and-dynamic-variables-methods-in-oop –

+0

Können Sie den gesamten HTML-Code, wo Sie versuchen, den PHP-Code zu echoten? –

+0

ok Entschuldigung, aktualisiert. –

Antwort

0

Ich weiß nicht, ob dies das ist, was Sie wollen, aber es ist das kleinste Beispiel, das ich tun könnte. Es ist mir in deiner Frage nicht klar, was genau du versuchst zu tun, da es keinen function2 Code gibt, den du gepostet hast, also muss ich raten, was das ist. Wie auch immer ...

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

class Table_call extends Gaia{ 

    public function function2(){ 
     echo __METHOD__; 
    } 

} 

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

Sie können es hier versuchen.

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

an Ihrem Code Sehen, Ihre keine Objekte Rückkehr auf die zweite Funktion aufzurufen. Denken Sie an es auf diese Weise

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

Auch Ihre Fehler

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

Der Standardrückgabetyp ist NULL so ...

Verwandte Themen