phpbar.de logo

Mailinglisten-Archive

[php] Methode lieber statisch oder nicht

[php] Methode lieber statisch oder nicht

Sebastian Mendel lists at sebastianmendel.de
Don Sep 13 15:08:30 CEST 2007


Yannik Hampe schrieb:
> 
> Steffen Kother wrote:
>> Hallo Leute,
>>
>> Habe gerade mal mit PHPEdit v2.12.2.5164 mein simples 5er Testskript
>> "enkäfert". Hier erstmal das Skript als solches:
>>
>> <?php
>> require_once 'library/common.class.inc.php5';
>>
>> $test =& single('common');
>> $test -> reqClasses('mysql');
>>
>> $result = $test -> mysql -> fetchAll(mysql::query('SELECT * FROM
>> sap_data.kna1 ORDER BY KUNNR ASC'));
>>
>> echo '<pre>';
>> print_r($test);
>> echo '</pre>';
>> ?>
>>
>> Funzt wie gewünscht. Error-Reporting steht auf E_ALL. Mich stört jetzt
>> nur noch die E_STRICT- Meldung "Non-static method mysql::query() should
>> not be called statically". Ohne "static"-Zusatz in der Definition der
>> Methode läuft das Skript relativ schnell durch. Schreibe ich aber
>> "static" mit rein, dann benötigt das Skript im Verhältnis dazu ewig.
>> Hier mal der unstatische Code der Methode:
>>
>>     public function query ($query = NULL, $link = NULL) {
>>         if (empty($this)) {
>>             $mysql = new mysql();
>>             return $mysql -> query($query, $link);
>>         }
>>
>>         if (NULL === $query) {
>>             return false;
>>         }
>>
>>         $link = $this -> checkResource('get_mysql_connect', $link);
>>
>>         $resource = @mysql_query($query, $link);
>>         $resource = $this -> checkResource('set_mysql_query',
>> $resource);
>>         return $resource;
>>     }
> 
> Ja... was soll ich dazu sagen mhh...
> Sagen wir mal vorsichtig: Ich glaube ausser in php hast du noch nicht 
> "richtig" OOP programmiert.
> Eine static Methode ist eine normale Funktion mit Klassenzugehörigkeit. 
> Sie hat kein $this. Mit anderen Worten: Dein if (empty(this)) ist IMMER 
> true. Damit bleibst du in einer Endlosrekursion stecken (Obwohl ich das 
> jetzt nicht getested habe udn du nur schreibst, das es im Vergleich 
> lange dauert aber schon funktionier...?).

das funktioniert (in PHP)

-- 
Sebastian

php::bar PHP Wiki   -   Listenarchive