Frage

Ich mag php im Konsolenmodus verwenden und eine Umgebung zu schaffen, um meine Funktionen zu testen.

Ich will nicht einen Web-Browser zu verwenden, und erstellen Sie eine neue Datei jedes Mal, wenn ich eine Funktion testen möchten gezwungen werden.

Ich mag die Funktion in der Konsole zuzugreifen und sie das Ergebnis dann zurück.

Wie kann ich das tun?

Update:

Vielleicht habe ich diese schlecht erklärt. Ich möchte nur, um zu sehen, was die Funktion der Rückkehr zur Folge hat.

Vielleicht muss ich Unit-Tests lernen, aber für den Moment möchte ich nur eine interaktive Konsole, die mir alle Funktionen einzeln zu testen.

In meinem Fall hat ich die Wordpress-Funktionen laden (ich weiß, wie Sie es mit einer regelmäßigen .php Datei und dann in einem Browser die Datei zu analysieren), aber ich weiß nicht, ob es möglich ist, es von dem Kommando mit PHP zu tun Linie.

War es hilfreich?

Lösung

Ich habe verwendet phpsh in der Vergangenheit und fand es sehr nützlich. Sobald Sie es starten, müssen Sie auf chdir(), wo Ihre Dateien sind und dann require() offensichtlich alle Dateien enthalten Funktionen, die Sie testen müssen. Sie können dann gerade testen Sie Ihre Funktion Anrufe, indem sie in der Shell eingeben z.B. var_dump(some_function(1, 2));

Andere Tipps

Ich denke, Sie haben genau um genauer zu sein, welche Art von Funktionen. Wordpress bietet keine so etwas aus der Box, die meisten PHP-Anwendungen nicht.

Ich denke auch, sich rufst du denn hier Schwierigkeiten, wenn solche Anwendungen nicht entwickelt sind für solche Umgebungen im Auge behalten.

Hier ist ein Beispiel versuchen, „CURRENT_TIME ()“ von functions.php und die Versuche zu nennen ich merke gerade zu tun hatte, um es wird nicht so funktionieren:


php -r 'require "functions.php"; var_dump(current_time("mysql"));'

gibt


Fatal error: Call to undefined function apply_filters() in functions.php on line 346

Der Versuch,


php -r 'require "functions.php"; require "plugin.php"; var_dump(current_time("mysql"));'

gibt


Fatal error: Call to undefined function wp_cache_get() in functions.php on line 351

Der Versuch,


php -r 'require "functions.php"; require "plugin.php"; require "cache.php"; var_dump(current_time("mysql"));'

gibt


Fatal error: Call to a member function get() on a non-object in cache.php on line 93

Mit Blick auf den letzten Fehler in der Quelle sehe ich


 function wp_cache_get($id, $flag = '') {
     global $wp_object_cache;

     return $wp_object_cache->get($id, $flag);
 }

globale Variablen verwenden macht das Testen in anderen Umgebungen ein PITA, wenn nicht unmöglich.

Wenn dies nicht das, was Sie versuchen, zu tun, haben Sie spezifischere / detailliert in Ihrer Frage zu sein.

Sie werden auf „Unit Testing“ in einem allgemeinen Sinne lesen bis wollen und dann versuchen, und sie auf PHP.

Der Rahmen für die Sie (falls vorhanden), der Stil-Code verwenden, und die Tests, die Sie ausführen möchten, werden die genauen Methoden, die Sie verwenden müssen, um zu bestimmen. Nur indem man zuerst das Konzept der Unit-Tests zu verstehen und sie in Ihre Codierung Best Practices Implementierung können Sie in dieser Hinsicht Fortschritte machen.

Wie wäre:

php -a

Und wenn Sie PHP mit Readline- Unterstützung kompiliert wird es mehr Phantasie sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top