Zoeken…


Dumping variabelen

Met de functie var_dump kunt u de inhoud van een variabele (type en waarde) dumpen voor foutopsporing.

Voorbeeld:

$array = [3.7, "string", 10, ["hello" => "world"], false, new DateTime()];
var_dump($array);

Output:

array(6) {
  [0]=>
  float(3.7)
  [1]=>
  string(6) "string"
  [2]=>
  int(10)
  [3]=>
  array(1) {
    ["hello"]=>
    string(5) "world"
  }
  [4]=>
  bool(false)
  [5]=>
  object(DateTime)#1 (3) {
    ["date"]=>
    string(26) "2016-07-24 13:51:07.000000"
    ["timezone_type"]=>
    int(3)
    ["timezone"]=>
    string(13) "Europe/Berlin"
  }
}

Fouten weergeven

Als u wilt dat PHP runtime-fouten op de pagina weergeeft, moet u display_errors inschakelen, in php.ini of met de functie ini_set .

U kunt kiezen welke fouten u wilt weergeven, met de functie error_reporting (of in de ini), die E_* accepteert, gecombineerd met bitsgewijze operatoren .

PHP kan fouten in tekst- of HTML-indeling weergeven, afhankelijk van de instelling html_errors .

Voorbeeld:

ini_set("display_errors", true);
ini_set("html_errors", false); // Display errors in plain text
error_reporting(E_ALL & ~E_USER_NOTICE); // Display everything except E_USER_NOTICE

trigger_error("Pointless error"); // E_USER_NOTICE
echo $nonexistentVariable; // E_NOTICE
nonexistentFunction(); // E_ERROR

Tekstuitvoer zonder opmaak: (HTML-indeling verschilt tussen implementaties)

Notice: Undefined variable: nonexistentVariable in /path/to/file.php on line 7

Fatal error: Uncaught Error: Call to undefined function nonexistentFunction() in /path/to/file.php:8
Stack trace:
#0 {main}
  thrown in /path/to/file.php on line 8

OPMERKING: Als u foutrapportage hebt uitgeschakeld in php.ini en dit tijdens runtime inschakelt, worden sommige fouten (zoals parse-fouten) niet weergegeven, omdat ze zijn opgetreden voordat de runtime-instelling werd toegepast.

De gebruikelijke manier om error_reporting te handelen is om het volledig in te schakelen met E_ALL constant tijdens de ontwikkeling en het publiekelijk weergeven met display_errors in de productiefase uit te schakelen om de interne E_ALL van uw scripts te verbergen.

phpinfo ()

Waarschuwing

Het is absoluut noodzakelijk dat phpinfo alleen in een ontwikkelomgeving wordt gebruikt. Geef nooit code met phpinfo in een productieomgeving

Invoering

Dat gezegd hebbende, kan het een nuttig hulpmiddel zijn bij het begrijpen van de PHP-omgeving (OS, configuratie, versies, paden, modules) waarin u werkt, vooral wanneer u een bug achterna zit. Het is een eenvoudige ingebouwde functie:

phpinfo();

Het heeft één parameter $what waarmee de uitvoer kan worden aangepast. De standaardwaarde is INFO_ALL , waardoor alle informatie wordt weergegeven en tijdens de ontwikkeling vaak wordt gebruikt om de huidige status van PHP te bekijken.

U kunt de parameter INFO_* constanten INFO_* , gecombineerd met bitsgewijze operatoren om een aangepaste lijst te bekijken.

Je kunt het in de browser uitvoeren voor een mooi opgemaakte gedetailleerde look. Het werkt ook in PHP CLI, waar u het naar less buizen kunt spuiten voor eenvoudiger zicht.

Voorbeeld

phpinfo(INFO_CONFIGURATION | INFO_ENVIRONMENT | INFO_VARIABLES);

Dit toont een lijst met PHP-richtlijnen ( ini_get ), omgeving ( $_ENV ) en vooraf gedefinieerde variabelen.

Xdebug

Xdebug is een PHP-extensie die mogelijkheden biedt voor foutopsporing en profilering.
Het maakt gebruik van het DBGp-foutopsporingsprotocol.

Er zijn enkele leuke functies in deze tool:

  • stapel sporen op fouten
  • maximale nestniveau-bescherming en tijdregistratie
  • nuttige vervanging van standaard var_dump() functie voor het weergeven van variabelen
  • maakt het mogelijk om alle functieaanroepen te loggen, inclusief parameters en retourwaarden naar een bestand in verschillende formaten
  • code dekking analyse
  • profilering informatie
  • foutopsporing op afstand (biedt interface voor debugger-clients die communiceren met actieve PHP-scripts)

Zoals u kunt zien, is deze extensie perfect geschikt voor de ontwikkelomgeving. Vooral de functie voor foutopsporing op afstand kan u helpen om uw php-code te debuggen zonder talloze var_dump's en het normale foutopsporingsproces te gebruiken zoals in C++ of Java talen.

Meestal is het installeren van deze extensie heel eenvoudig:

pecl install xdebug # install from pecl/pear

En activeer het in je php.ini:

zend_extension="/usr/local/php/modules/xdebug.so"

Raadpleeg deze instructies in meer gecompliceerde gevallen

Wanneer u deze tool gebruikt, moet u onthouden dat:
XDebug is niet geschikt voor productieomgevingen

phpversion ()

Invoering

Wanneer u met verschillende bibliotheken en de bijbehorende vereisten werkt, is het vaak noodzakelijk om de versie van de huidige PHP-parser of een van de pakketten te kennen.

Deze functie accepteert een enkele optionele parameter in de vorm van een extensienaam: phpversion('extension') . Als de betreffende extensie is geïnstalleerd, retourneert de functie een tekenreeks met de versiewaarde. Als de extensie niet is geïnstalleerd, wordt FALSE geretourneerd. Als de extensienaam niet wordt opgegeven, retourneert de functie de versie van PHP parser zelf.

Voorbeeld

print "Current PHP version: " . phpversion();
// Current PHP version: 7.0.8

print "Current cURL version: " . phpversion( 'curl' );
// Current cURL version: 7.0.8
// or
// false, no printed output if package is missing

Foutrapportage (gebruik ze allebei)

// this sets the configuration option for your environment
ini_set('display_errors', '1');

//-1 will allow all errors to be reported
error_reporting(-1);


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow