亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Spooky Scary Php

Feb 25, 2025 am 09:25 AM

Spooky Scary PHP

Sind Sie bereit für Kürbis Sü?igkeiten und Apfelwein? Das j?hrliche Halloween ist wieder da! Obwohl der Fanatismus auf der ganzen Welt nicht so gut ist wie die Vereinigten Staaten, m?chte ich immer noch einige "schreckliche" PHP -Tipps teilen, um dieses Festival zu feiern. Dieser Beitrag ist einfach und unterhaltsam und zeigt Ihnen einige der überraschenden (aber logischen) Verhaltensweisen von PHP selbst sowie diese gruseligen (und m?glicherweise sehr unlogischen) M?glichkeiten, wie einige Menschen PHP verwenden, um Aufgaben zu erledigen. Sie k?nnen es als mein Urlaubsgeschenk betrachten, ein bisschen Programmierer "Spirituelle Sü?igkeiten" - warum Sü?igkeiten nur Kinder, die nicht alle K?stlichkeiten geben?

Zusammenfassung der Schlüsselpunkte

  • PHP kann ein unerwartetes Verhalten aufweisen, wie z. Dieses Problem kann durch Neuzuweisung der Zeichenfolge mit den Schlüssel des Arrays gelindert werden. foreach
  • Bei der Verwendung von PHP zur Ausführung komplexerer Aufgaben (z. B. Shell -Skripte) ist es entscheidend zu verstehen, wie die Ausführungsumgebung bei der Gabelung kloniert wird und wie verschiedene Ressourcen in allen Prozessen beeinflusst werden. Wenn Sie beispielsweise eine Verbindung zu einer Datenbank herstellen, ist es am besten, sich nach dem Gabel Child -Prozess im übergeordneten Prozess zu verbinden, und der untergeordnete Prozess wird bei Bedarf von selbst hergestellt.
  • Singleton-Muster (eigentlich nichts anderes als ausgefallene objektorientierte globale Variablen) kann das Debuggen erschweren. Es wird empfohlen, nach M?glichkeit den Singleton -Modus zu vermeiden.
  • W?hrend unkonventionelle Codierungspraktiken wie "gruseliges be?ngstigendes PHP" interessant und lehrreich sind, werden sie normalerweise nicht als gute Praktiken für das Schreiben von Produktionscode angesehen, da sie h?ufig ineffizienten Gebrauch, unklar oder unvorhersehbar sind.

HACED -Array

Es war einmal, dass Arthur in einem nicht so fernigen Entwicklungsstudio sp?t in der Nacht Code geschrieben hat. Er wusste nicht, dass das Array, das er benutzen wollte, heimgesucht wurde! Mit jedem Tap auf der Tastatur spürte er, wie eine K?lte von seiner Wirbels?ule rutschte, aber er ignorierte diese subtile Vorahnung dumm.

<?php
$spell = array("double", "toil", "trouble", "cauldron", "bubble");
foreach ($spell as &$word) {
    $word = ucfirst($word);
}
foreach ($spell as $word) {
    echo $word . "n";
}
Okay, dieses Array ist nicht wirklich verfolgt, aber die Ausgabe ist in der Tat unerwartet:

<code>Double
Toil
Trouble
Cauldron
Cauldron</code>
Der Grund für dieses "erschreckende" Verhalten ist, wie PHP Referenzen au?erhalb der ersten

-Schule beh?lt. Wenn die zweite Schleife beginnt, ist foreach immer noch eine Referenz, die auf das letzte Element des Arrays zeigt. Die erste Iteration der zweiten Schleife weist $word "Double" zu, was das letzte Element überschreibt. Die zweite Iteration weist $word "Mühe" zu und überschreibt das letzte Element erneut. Wenn die Schleife den Wert des letzten Elements liest, wurde er mehrmals überschrieben. Um einen Einblick in dieses Verhalten zu erhalten, empfehle ich, Johannes Schlüters Blog -Beitrag zum Thema "Referenzen und Foreach" zu lesen. Sie k?nnen diese leicht modifizierte Version auch ausführen und ihre Ausgabe überprüfen, um besser zu verstehen, was PHP tut: $word

<?php
$spell = array("double", "toil", "trouble", "cauldron", "bubble");
foreach ($spell as &$word) {
    $word = ucfirst($word);
}
foreach ($spell as $word) {
    echo $word . "n";
}

Arthur lernte in dieser Nacht eine sehr wichtige Lektion und fixierte seinen Code mit den Schlüssel des Arrays, um die Zeichenfolge neu zuzuweisen:

<code>Double
Toil
Trouble
Cauldron
Cauldron</code>

Ghost Database Connection

PHP wird zunehmend nicht nur jeden Tag gebeten, Webseiten zu generieren. Die Anzahl der in PHP geschriebenen Shell -Skripte nimmt zu, und die von diesen Skripten ausgeführten Aufgaben werden immer komplexer, da Entwickler die Vorteile der Integration von Entwicklungssprachen sehen. In der Regel ist die Leistung dieser Skripte akzeptabel und die für die Bequemlichkeit geführten Kompromisse werden nachgewiesen. Also schreibt Susan eine parallele Verarbeitungsaufgabe, deren Code dem folgenden ?hnlich ist:

<?php
$spell = array("double", "toil", "trouble", "cauldron", "bubble");
foreach ($spell as &$word) {
    $word = ucfirst($word);
}
var_dump($spell);
foreach ($spell as $word) {
    echo join(" ", $spell) . "n";
}

Ihr Code greift die untergeordneten Prozesse auf, um eine langj?hrige Arbeit parallel auszuführen, w?hrend der übergeordnete Prozess weiterhin die Kinderprozesse überwacht und die Ergebnisse meldet, wenn alle Kinder enden.

<?php
foreach ($spell as $key => $word) {
    $spell[$key] = ucfirst($word);
}

Susans Führung forderte sie jedoch auf, Statusinformationen in das Protokoll zu protokollieren, anstatt sie an die Standardausgabe auszugeben. Susan erweiterte ihren Code mit einem Singleton -Muster -PDO -Datenbankverbindungsmechanismus, der bereits in der Codebasis des Unternehmens enthalten war.

#! /usr/bin/env php
<?php
$pids = array();
foreach (range(0, 4) as $i) {
    $pid = pcntl_fork();
    if ($pid > 0) {
        echo "Fork child $pid.n";
        // record PIDs in reverse lookup array
        $pids[$pid] = true;
    } else if ($pid == 0) {
        echo "Child " . posix_getpid() . " working...n";
        sleep(5);
        exit;
    }
}
// wait for children to finish
while (count($pids)) {
    $pid = pcntl_wait($status);
    echo "Child $pid finished.n";
    unset($pids[$pid]);
}
echo "Tasks complete.n";

Susan erwartet, dass Zeilen in der Tabelle timings aktualisiert werden. Prozesse. Leider bringt die Ausführung eine Ausnahme aus und die Datenbank spiegelt ihre Erwartungen nicht wider.

<code>Fork child 1634.
Fork child 1635.
Fork child 1636.
Child 1634 working...
Fork child 1637.
Child 1635 working...
Child 1636 working...
Fork child 1638.
Child 1637 working...
Child 1638 working...
Child 1637 finished.
Child 1636 finished.
Child 1638 finished.
Child 1635 finished.
Child 1634 finished.
Tasks complete.</code>
#! /usr/bin/env php
<?php
$db = Db::connection();
$db->query("UPDATE timings SET tstamp=NOW() WHERE name='start time'");

$pids = array();
foreach (range(0, 4) as $i) {
    ...
}
while (count($pids)) {
    ...
}

$db->query("UPDATE timings SET tstamp=NOW() WHERE name='stop time'");

class Db
{
    protected static $db;

    public static function connection() {
        if (!isset(self::$db)) {
            self::$db = new PDO("mysql:host=localhost;dbname=test",
                "dbuser", "dbpass");
            self::$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        }
        return self::$db;
    }
}

Wie Arthurs Array ist Susans Datenbank heimgesucht? Wenn ich Ihnen die folgenden Hinweise gebe, prüfen Sie, ob Sie dieses Geheimnis zusammenfügen k?nnen: 1. Wenn ein Prozess Gabel ist, wird der übergeordnete Prozess als Kinderprozess kopiert. Diese replizierten Prozesse führen dann von da an parallel aus. 2. statische Mitglieder werden unter allen F?llen der Klasse geteilt.

PDO -Verbindung wird als Singleton verpackt, sodass jeder Hinweis darauf in der Anwendung auf dieselbe Ressource im Speicher zeigt. DB::connection() Gibt zun?chst die Objektreferenz, die übergeordnete Prozessgabel, der untergeordnete Prozess fort wieder. Die Verbindung zu MySQL wurde im Kinderprozess geschlossen, sodass der letzte Anruf fehlschl?gt. Naiv zu versuchen, die Verbindung erneut zu erhalten, bevor die endgültige Protokollierungsanfrage Susan nicht hilft, da die gleiche fehlgeschlagene PDO -Instanz zurückgegeben wird, da es sich um einen Singleton handelt. Ich empfehle, Singletons zu vermeiden - sie sind wirklich nur ausgefallene objektorientierte globale Variablen, was das Debuggen erschwert. Selbst in unserem Fall wird die Verbindung immer noch durch den Kinderprozess geschlossen, aber wenn DB::connection() vor der zweiten Abfrage gerufen wird, wird sie zumindest eine neue Verbindung ohne Singleton zurückgeben. Ein besserer Weg ist jedoch zu verstehen, wie die Ausführungsumgebung bei Gabel geklont wird und wie verschiedene Ressourcen in allen Prozessen beeinflusst werden. In diesem Fall ist es am besten, eine Verbindung zur Datenbank im übergeordneten Prozess nach dem Gabel Child -Prozess herzustellen, und der untergeordnete Prozess wird bei Bedarf selbst eine Verbindung hergestellt. Verbindungen sollten nicht geteilt werden.

<code>PHP Fatal error:  Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 2006 MySQL server has gone away' in /home/susanbrown/test.php:21
Stack trace:
#0 /home/susanbrown/test.php(21): PDO->query('UPDATE timers S...')
#1 {main}</code>

dr

Mary Shelleys "Frankenstein" erz?hlt die Geschichte eines Wissenschaftlers, das Leben schafft, aber er fühlt sich angewidert von seiner H?sslichkeit und verl?sst es. Nach einigen unn?tigen Tod und Zerst?rung verfolgt Dr. Frankenstein seine Sch?pfung bis zum Ende der Welt und versucht, sie zu zerst?ren. Viele von uns haben so h?ssliches Code -Leben gegeben, dass wir uns sp?ter wünschten, wir k?nnten ihm entkommen - der Code ist so h?sslich, so langweilig, so chaotisch, dass wir uns erbrechen wollen, aber er will nur Liebe und Verst?ndnis. Vor ein paar Jahren habe ich mit einer Idee über Datenbankschnittstellen und wie sie aussehen, wenn sie die Unix -Philosophie von "Alles is eine Datei" aussehen würden: Abfragen werden in "Datei" geschrieben. aus der "Datei" gelesen werden. Eines führt zum anderen, nachdem ich nach einigen meiner eigenen Tod und zerst?rerischen Kodierung die folgende Klasse geschrieben habe, die wenig mit meinen ersten Gedanken zu tun hat:

<?php
$spell = array("double", "toil", "trouble", "cauldron", "bubble");
foreach ($spell as &$word) {
    $word = ucfirst($word);
}
foreach ($spell as $word) {
    echo $word . "n";
}

Das Ergebnis ist Genie, aber ekelhaft: eine Instanz, die wie ein Objekt (keine echte API -Methode), ein Array oder eine Zeichenfolge aussieht ...

<code>Double
Toil
Trouble
Cauldron
Cauldron</code>

Ich habe kurz danach einen Blog geschrieben und ihn als b?se gekennzeichnet. Freunde und Kollegen, die es fast alle sahen: "Gro?artig! T?te es jetzt ... verbrenne es mit Feuer." Die einzige Regel, die sie wirklich verletzt, sind die Erwartungen des Programmierers an milde Benennungsmethoden wie query() und result(). Stattdessen verwendet es die Abfragezeichenfolge selbst als Abfragemethode, das Objekt ist die Schnittstelle und der Ergebnissatz ist das Ergebnis. Natürlich ist es nicht schlechter als eine übergeneralisierte ORM -Schnittstelle, die select() und where() Methoden miteinander verbindet, die wie SQL -Abfragen aussieht, aber mehr -> hat. Vielleicht ist meine Klasse das nicht b?se? Vielleicht will es nur geliebt werden? Natürlich m?chte ich in der Arktis nicht sterben!

Schlussfolgerung

Ich hoffe, Sie haben diesen Beitrag genossen und dass diese Beispiele Sie (zu viele) Albtr?ume nicht bringen! Ich glaube, Sie haben auch Ihre eigenen Geschichten über heimgesuchte oder schreckliche Code, egal wo Sie sich befinden, Sie müssen den Urlaubsspa? nicht verschwinden lassen. Teilen Sie also Ihre schreckliche PHP -Geschichte in den Kommentaren unten! Bilder aus Fotolien

(Folgendes ist FAQ, die gem?? dem ursprünglichen Inhalt angepasst und optimiert wurden)

H?ufig gestellte Fragen zu "gruseliger gruseliger PHP"

Was ist "gruseliges be?ngstigendes PHP"?

"Spooky Scary PHP" ist eine eindeutige PHP -Codierungsmethode, die die Verwendung unkonventioneller oder unerwarteter Methoden zur Erzielung bestimmter Ergebnisse beinhaltet. Dies kann die Verwendung weniger bekannter Funktionen, die Nutzung von Funktionen in der Sprache und sogar die Verwendung von Code, die nicht funktionieren, aber funktioniert, umfassen. Es ist eine unterhaltsame und aufregende M?glichkeit, die Tiefe von PHP zu erkunden und oft zu überraschenden und inspirierenden Entdeckungen zu führen.

Wie kann man "Spooky Scary PHP" lernen?

Der beste Weg, um "gruselige, be?ngstigende PHP" zu lernen, ist ein solides Verst?ndnis der Grundlagen von PHP. Sobald Sie mit den Grundlagen zufrieden sind, k?nnen Sie die dunklen Ecken der Sprache erkunden. Auch das Lesen von Artikeln, Tutorials und Forum -Diskussionen über "gruselige Scary PHP" kann sehr hilfreich sein. Denken Sie daran, das Ziel ist es nicht, effiziente oder praktische Code zu schreiben, sondern die Sprache tiefer zu erforschen und zu verstehen.

Ist "gruseliges be?ngstigendes PHP" eine gute Praxis?

"Spooky Scary PHP" wird normalerweise nicht als gute Praxis für das Schreiben von Produktionscode angesehen. Es beinhaltet normalerweise die Verwendung ineffizienter, unklarer oder unvorhersehbarer Funktionen oder Techniken. Es kann jedoch eine gro?artige M?glichkeit sein, mehr über die Sprache zu erfahren und Ihr Verst?ndnis von PHP in Frage zu stellen. Es ist eher ein Lernwerkzeug und ein lustiges Experiment als ein praktischer Codierungsstil.

Ist "gruseliges be?ngstigendes PHP" sch?dlich?

W?hrend "Spooky Scary PHP" lustig und lehrreich ist, verwenden Sie es verantwortungsbewusst. Einige Technologien, die in "Spooky Scary PHP" verwendet werden, k?nnen Schaden zufügen, wenn sie in Echtzeitumgebungen verwendet werden, wie z. B. solche, die Merkmale oder Fehler in der Sprache ausnutzen. Stellen Sie sicher, dass Sie jeden Code, den Sie schreiben, gründlich testen, und verwenden Sie niemals die "Spooky Scary PHP" -Technologie in wichtigen Teilen Ihres Projekts.

Das obige ist der detaillierte Inhalt vonSpooky Scary Php. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erkl?rung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Hei?e KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?e Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

PHP-Tutorial
1488
72
Variabler PHP -Bereich erkl?rt Variabler PHP -Bereich erkl?rt Jul 17, 2025 am 04:16 AM

H?ufige Probleme und L?sungen für den variablen PHP -Umfang umfassen: 1. Die globale Variable kann innerhalb der Funktion nicht zugegriffen werden, und sie muss bei der Verwendung des globalen Schlüsselworts oder Parameters übergeben werden. 2. Die statische Variable wird statisch deklariert und nur einmal initialisiert und der Wert wird zwischen mehreren Aufrufen beibehalten. 3.. Hyperglobale Variablen wie $ _get und $ _post k?nnen direkt in jedem Bereich verwendet werden, aber Sie müssen auf eine sichere Filterung achten. 4. Die anonymen Funktionen müssen über das Schlüsselwort verwenden, und wenn Sie externe Variablen ?ndern, müssen Sie eine Referenz übergeben. Das Beherrschen dieser Regeln kann dazu beitragen, Fehler zu vermeiden und die Code -Stabilit?t zu verbessern.

Wie behandle ich Datei -Uploads sicher in PHP? Wie behandle ich Datei -Uploads sicher in PHP? Jul 08, 2025 am 02:37 AM

Um PHP -Datei -Uploads sicher zu verarbeiten, müssen Sie die Quelle und die Type und die Eingabe des Dateinamens und des Pfades überprüfen, Serverbeschr?nkungen festlegen und Mediendateien zweimal verarbeiten. 1. überprüfen Sie die Upload -Quelle, um CSRF durch Token zu verhindern, und erkennen Sie den realen MIME -Typ über die Finfo_file mithilfe der Whitelist -Steuerung. 2. Benennen Sie die Datei in eine zuf?llige Zeichenfolge um und bestimmen Sie die Erweiterung, um sie gem?? dem Erkennungstyp in einem Verzeichnis ohne Web zu speichern. 3. Die PHP -Konfiguration begrenzt die Hochladengr??e und das tempor?re Verzeichnis Nginx/Apache verbietet den Zugriff auf das Upload -Verzeichnis. 4. Die GD -Bibliothek stellt die Bilder neu, um potenzielle b?swillige Daten zu l?schen.

Code in PHP aus dem Code ausgehen Code in PHP aus dem Code ausgehen Jul 18, 2025 am 04:57 AM

Es gibt drei g?ngige Methoden für den PHP -Kommentarcode: 1. Verwenden Sie // oder #, um eine Codezeile zu blockieren, und es wird empfohlen, // zu verwenden. 2. Verwenden Sie /.../, um Codebl?cke mit mehreren Zeilen zu wickeln, die nicht verschachtelt werden k?nnen, aber gekreuzt werden k?nnen. 3.. Kombinationskenntnisse Kommentare wie die Verwendung / if () {} / Um Logikbl?cke zu steuern oder um die Effizienz mit Editor -Verknüpfungsschlüssel zu verbessern, sollten Sie auf die Schlie?ung von Symbolen achten und das Verschachteln bei der Verwendung vermeiden.

Wie arbeiten Generatoren in PHP? Wie arbeiten Generatoren in PHP? Jul 11, 2025 am 03:12 AM

AgneeratorinphpiSamemory-effizientes WaytoiterateOverlargedatasetsByyieldingValueatimeinsteadofReturningThemallatonce.1.GeneratorsusetheyieldKeywordtoproduktenvaluesonDemand, ReducingMemoryUsage.2.TheyareusefulforfulforfulfordlingBiglopploups, Lesebiglochen, Leselungen, Lesebigs, Leselung, oder

Tipps zum Schreiben von PHP -Kommentaren Tipps zum Schreiben von PHP -Kommentaren Jul 18, 2025 am 04:51 AM

Der Schlüssel zum Schreiben von PHP -Kommentaren liegt in der Kl?rung des Zwecks und der Spezifikationen. Kommentare sollten "Warum" und nicht "was getan" erkl?ren, um Redundanz oder zu Einfachheit zu vermeiden. 1. Verwenden Sie ein einheitliches Format wie Docblock (/*/) für Klassen- und Methodenbeschreibungen, um die Lesbarkeit und die Kompatibilit?t der Werkzeuge zu verbessern. 2. Betonen Sie die Gründe für die Logik, z. B. warum JS -Sprünge manuell ausgeben müssen. 3. Fügen Sie eine übersichtsbeschreibung vor komplexem Code hinzu, beschreiben Sie den Prozess in Schritten und helfen Sie, die Gesamtidee zu verstehen. V. Gute Anmerkungen k?nnen die Kommunikationskosten senken und die Effizienz der Code -Wartung verbessern.

SchnellpHP -Installations -Tutorial SchnellpHP -Installations -Tutorial Jul 18, 2025 am 04:52 AM

Toinstallphpquickly, usexampponwindowsorhomebrewonmacos.1.onwindows, download undInstallxampp, SelectComponents, Startapache und PlaceFilesinhtdocscs.2.Anternativ, manuellinstallphpfrfr

So greifen Sie in einer Zeichenfolge nach Index in PHP auf ein Zeichen zu So greifen Sie in einer Zeichenfolge nach Index in PHP auf ein Zeichen zu Jul 12, 2025 am 03:15 AM

In PHP k?nnen Sie quadratische Klammern oder lockige Klammern verwenden, um Zeichenfolgenspezifikationsspezifische Indexzeichen zu erhalten, aber quadratische Klammern werden empfohlen. Der Index startet von 0 und der Zugriff au?erhalb des Bereichs gibt einen Nullwert zurück und kann keinen Wert zugewiesen; MB_SUBSTR ist erforderlich, um Multi-Byte-Zeichen zu verarbeiten. Zum Beispiel: $ str = "Hallo"; echo $ str [0]; Ausgabe H; und chinesische Zeichen wie Mb_Substr ($ str, 1,1) müssen das richtige Ergebnis erzielen. In den tats?chlichen Anwendungen sollte die L?nge der Zeichenfolge vor dem Schleifen überprüft werden, dynamische Zeichenfolgen müssen für die Gültigkeit verifiziert werden, und mehrsprachige Projekte empfehlen, Multi-Byte-Sicherheitsfunktionen einheitlich zu verwenden.

PHP lernen: Ein Anf?ngerführer PHP lernen: Ein Anf?ngerführer Jul 18, 2025 am 04:54 AM

Tolearnphpeffectival, startbysettingupalocalerverenVironmentusexs -LikexamppandacodeeditorikevScode.1) InstallxamppForapache, MySQL und Php.SeacodeeditorForsyntaxSupport.3) testyourscludingveliktingveliktelaThbiliodble.Neclyble.NektFile

See all articles