Inhaltsverzeichnis
手把手教你做关键词匹配项目(搜索引擎)---- 第十三天,教你做第十三天
Heim Backend-Entwicklung PHP-Tutorial 手把手教你做关键词匹配项目(搜索引擎)---- 第十三天,教你做第十三天_PHP教程

手把手教你做关键词匹配项目(搜索引擎)---- 第十三天,教你做第十三天_PHP教程

Jul 13, 2016 am 10:20 AM
- Tun 关键词 匹配 手把手 搜索引擎 lehre dich 项目

手把手教你做关键词匹配项目(搜索引擎)---- 第十三天,教你做第十三天

第十三天

 

自从小帅帅被于老大批了之后,心里非常不爽,因为有这样的理由:我已经做到了你想要的,为什么还得不到肯定。

什么样的程序员才是优秀的?小帅帅带着这样的疑问去了解设计模式。

尽管他把设计模式看了很多遍,甚至连设计模式的名字背得滚瓜烂熟,单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式...等。

但是小帅帅还是不知道如何去用,没办法,他只好再次去请教于老大,于老大给了一份代码让他去看,看看里面用了什么设计模式。

 

什么样的程序员才是优秀的?有人说,优秀的程序员是写出可以阅读的代码,而普通的程序员是写出可以运行的代码。

 

于老大的代码如下:

<?<span>php
</span><span>class</span><span> SelectorItem {

    </span><span>private</span> <span>$item</span><span>;

    </span><span>public</span> <span>function</span> __construct(<span>$item</span><span>){
        </span><span>$this</span>->item = <span>$item</span><span>;
    }

    </span><span>public</span> <span>function</span> __get(<span>$name</span><span>){
        </span><span>if</span>(<span>isset</span>(<span>$this</span>->item-><span>$name</span><span>)){
            </span><span>return</span> <span>$this</span>->item-><span>$name</span><span>;
        }
        </span><span>return</span> <span>null</span><span>;
    }

    </span><span>public</span> <span>static</span> <span>function</span> createFromApi(<span>$num_iid</span><span>){
        </span><span>$client</span> = <span>new</span><span> TopClient();
        </span><span>$client</span>->appkey = 'xx'<span>;
        </span><span>$client</span>->secretKey = 'xx'<span>;

        </span><span>$req</span> = <span>new</span><span> ItemGetRequest();
        </span><span>$req</span>->setFields('props_name,property_alias,detail_url,cid,title'<span>);
        </span><span>$req</span>->setNumIid(<span>$num_iid</span><span>);
        </span><span>$resp</span> = <span>$client</span>->execute(<span>$req</span><span>);

        </span><span>if</span>(<span>isset</span>(<span>$resp</span>-><span>code)){
            </span><span>#</span><span> error handle</span>
            <span>throw</span> <span>new</span> <span>Exception</span>(<span>$resp</span>->msg, <span>$resp</span>-><span>code);
        }
        </span><span>return</span> <span>new</span> self(<span>$resp</span>-><span>item);
    }
}


</span><span>class</span><span> CharList {

    </span><span>private</span> <span>$core</span> = <span>array</span><span>();
    </span><span>private</span> <span>$blacklist</span> = <span>array</span><span>();

    </span><span>public</span> <span>function</span> addCore(<span>$char</span><span>){

        </span><span>if</span>(!<span>in_array</span>(<span>$char</span>,<span>$this</span>-><span>core))
            </span><span>$this</span>->core[] = <span>$char</span><span>;
    }
    
    </span><span>public</span> <span>function</span><span> getCore(){
        </span><span>return</span> <span>$this</span>-><span>core;
    }

    </span><span>public</span> <span>function</span> addBlacklist(<span>$char</span><span>){
        </span><span>if</span>(!<span>in_array</span>(<span>$char</span>,<span>$this</span>-><span>blacklist))
            </span><span>$this</span>->blacklist[] = <span>$char</span><span>;
    }
    
    </span><span>public</span> <span>function</span><span> getBlacklist(){
        </span><span>return</span> <span>$this</span>-><span>blacklist;
    }
}

</span><span>abstract</span> <span>class</span><span> CharListHandle {
    
    </span><span>protected</span> <span>$charlist</span><span>;
    </span><span>public</span> <span>function</span> __construct(<span>$charlist</span><span>){
        </span><span>$this</span>->charlist = <span>$charlist</span><span>;
    }
    
    </span><span>abstract</span> <span>function</span> <span>exec</span><span>();
}

</span><span>class</span> MenCharListHandle <span>extends</span><span> CharListHandle {
    
    </span><span>public</span> <span>function</span> <span>exec</span><span>(){
        </span><span>$this</span>->charlist->addCore("男装"<span>);
        </span><span>$this</span>->charlist->addBlacklist("女"<span>);
    }
}

</span><span>class</span> WomenCharListHandle <span>extends</span><span> CharListHandle{
    </span><span>public</span> <span>function</span> <span>exec</span><span>(){
        </span><span>$this</span>->charlist->addCore("女装"<span>);
        </span><span>$this</span>->charlist->addBlacklist("男"<span>);
    }
}

</span><span>#</span><span> 其他CharList Handle小帅帅完成</span>

<span>class</span><span> Selector {

    </span><span>private</span> <span>static</span>  <span>$charListHandle</span> = <span>array</span><span>(
        </span>"男装"=>"MenCharListHandle",
        "女装"=>"WomenCharListHandle",
        "情侣装"=>"LoversCharListHandle",
        "童装"=>"ChildrenCharListHandle"<span>
    );

    </span><span>public</span> <span>static</span> <span>function</span> select(<span>$num_iid</span><span>){
        </span><span>$selectorItem</span> = SelectorItem::createFromApi(<span>$num_iid</span><span>);
        Logger</span>::trace(<span>$selectorItem</span>-><span>props_name);
        </span><span>$matchTitle</span> = <span>$selectorItem</span>->title.<span>$selectorItem</span>-><span>props_name;
        
        </span><span>$charlist</span> = <span>new</span><span> CharList();
        
        </span><span>foreach</span>(self::<span>$charListHandle</span> <span>as</span> <span>$matchKey</span>=><span>$className</span><span>){
            </span><span>if</span>(<span>preg_match</span>("/<span>$matchKey</span>/",<span>$matchTitle</span><span>)){
                </span><span>$handle</span> = self::createCharListHandle(<span>$className</span>,<span>$charlist</span><span>);
                </span><span>$handle</span>-><span>exec</span><span>();
            }
        }
        
        </span><span>//</span><span>do search things       </span>
<span>
    }
    
    </span><span>public</span> <span>static</span> <span>function</span> createCharListHandle(<span>$className</span>,<span>$charlist</span><span>){
        </span><span>if</span>(<span>class_exists</span>(<span>$className</span><span>)){
            </span><span>return</span> <span>new</span> <span>$className</span>(<span>$charlist</span><span>);
        }
        </span><span>throw</span> <span>new</span> <span>Exception</span>("class not exists",0<span>);
    }
}</span>
Nach dem Login kopieren

小帅帅看了代码后再也按耐不住了,这就是传说中的于老大,还不是抄的我的代码。。。

于老大要是听到小帅帅的想法,会有什么举动呢?

小帅帅没办法继续去研究神功秘籍。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/867003.htmlTechArticle手把手教你做关键词匹配项目(搜索引擎)---- 第十三天,教你做第十三天 第十三天 自从小帅帅被于老大批了之后,心里非常不爽,因为有...
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

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.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

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)

Wie stelle ich die Blende beim Xiaomi Mi 14 Ultra ein? Wie stelle ich die Blende beim Xiaomi Mi 14 Ultra ein? Mar 19, 2024 am 09:01 AM

Die Anpassung der Blendengröße hat einen entscheidenden Einfluss auf den Fotoeffekt. Das Xiaomi Mi 14 Ultra bietet eine beispiellose Flexibilität bei der Einstellung der Kamerablende. Damit jeder die Blende reibungslos einstellen und die Blendengröße frei anpassen kann, bietet Ihnen der Herausgeber hier eine ausführliche Anleitung zum Einstellen der Blende beim Xiaomi Mi 14Ultra. Wie stelle ich die Blende beim Xiaomi Mi 14Ultra ein? Starten Sie die Kamera, wechseln Sie in den „Professionellen Modus“ und wählen Sie die Hauptkamera aus – W-Objektiv. Klicken Sie auf die Blende, öffnen Sie das Blendenrad, A ist automatisch, wählen Sie je nach Bedarf f/1,9 oder f/4,0.

Kann KI Fermats letzten Satz überwinden? Der Mathematiker gab fünf Jahre seiner Karriere auf, um 100 Beweisseiten in Code umzuwandeln Kann KI Fermats letzten Satz überwinden? Der Mathematiker gab fünf Jahre seiner Karriere auf, um 100 Beweisseiten in Code umzuwandeln Apr 09, 2024 pm 03:20 PM

Fermats letzter Satz steht kurz davor, von der KI erobert zu werden? Und das Bedeutsamste an der ganzen Sache ist, dass der letzte Satz von Fermat, den die KI gerade lösen wird, genau dazu dient, zu beweisen, dass KI nutzlos ist. Früher gehörte die Mathematik zum Bereich der reinen menschlichen Intelligenz; heute wird dieses Gebiet von fortschrittlichen Algorithmen entschlüsselt und mit Füßen getreten. Bild Der letzte Satz von Fermat ist ein „berüchtigtes“ Rätsel, das Mathematikern seit Jahrhunderten Rätsel aufgibt. Es wurde 1993 bewiesen, und jetzt haben Mathematiker einen großen Plan: den Beweis mithilfe von Computern nachzubilden. Sie hoffen, dass etwaige logische Fehler in dieser Version des Beweises durch einen Computer überprüft werden können. Projektadresse: https://github.com/riccardobrasca/flt

Mar 18, 2024 pm 01:20 PM

Ce Modifier (CheatEngine) ist ein Spielmodifizierungstool zum Ändern und Bearbeiten des Spielspeichers. Als Nächstes erklärt Ihnen der Editor, wie Sie Chinesisch in Ce Modifier festlegen. Bei der neuen Software, die wir herunterladen, kann es verwirrend sein, dass die Benutzeroberfläche nicht auf Chinesisch ist. Auch wenn diese Software nicht in China entwickelt wurde, gibt es Möglichkeiten, sie in die chinesische Version zu konvertieren. Dieses Problem kann durch einfaches Anwenden des chinesischen Patches gelöst werden. Öffnen Sie nach dem Herunterladen und Installieren der CheatEngine-Software (ce modifier) ​​den Installationsort und suchen Sie den Ordner mit dem Namen „Sprachen“, wie in der folgenden Abbildung dargestellt

DaVinci Resolve Studio unterstützt jetzt die AV1-Hardwarekodierung für AMD-Grafikkarten DaVinci Resolve Studio unterstützt jetzt die AV1-Hardwarekodierung für AMD-Grafikkarten Mar 06, 2024 pm 10:04 PM

Aktuelle Nachrichten: LackMagic hat das öffentliche Beta-Update 18.5PublicBeta2 der Videobearbeitungssoftware DaVinci ResolveStudio veröffentlicht, das AV1-Kodierungsunterstützung für AMD Radeon-Grafikkarten bietet. Nach dem Update auf die neueste Version können Benutzer von AMD-Grafikkarten die Hardwarebeschleunigung für die AV1-Kodierung in DaVinci Resolve Studio nutzen. Obwohl der Beamte keine Angaben zu den unterstützten Architekturen oder Modellen macht, wird erwartet, dass alle Benutzer von AMD-Grafikkarten diese Funktion ausprobieren können. Im Jahr 2018 veröffentlichte AOMedia einen neuen Videokodierungsstandard AV1 (AOMediaVideoCodec1.0). AV1 wird von mehreren produziert

Wie aktualisiere ich Honor MagicOS 8.0 auf dem Honor 90 GT? Wie aktualisiere ich Honor MagicOS 8.0 auf dem Honor 90 GT? Mar 18, 2024 pm 06:46 PM

Honor 90GT ist ein kostengünstiges Smartphone mit hervorragender Leistung und hervorragendem Benutzererlebnis. Allerdings kann es manchmal zu Problemen kommen, z. B. wie aktualisiere ich Honor MagicOS8.0 auf dem Honor 90GT? Dieser Schritt kann bei verschiedenen Mobiltelefonen und Modellen unterschiedlich sein. Lassen Sie uns also besprechen, wie Sie das System richtig aktualisieren. Wie aktualisiere ich Honor MagicOS 8.0 auf Honor 90GT? Laut Nachrichten vom 28. Februar hat Honor heute das öffentliche Beta-Update von MagicOS8.0 für seine drei Mobiltelefone 90GT/100/100Pro veröffentlicht. Die Paketversionsnummer ist 8.0.0.106 (C00E106R3P1). . Stellen Sie sicher, dass der Akku des 90GT vollständig aufgeladen ist.

Erfahren Sie, wie Sie die neuen erweiterten Funktionen von iOS 17.4 „Schutz vor gestohlenen Geräten' nutzen. Erfahren Sie, wie Sie die neuen erweiterten Funktionen von iOS 17.4 „Schutz vor gestohlenen Geräten' nutzen. Mar 10, 2024 pm 04:34 PM

Apple hat am Dienstag das iOS 17.4-Update veröffentlicht, das eine Reihe neuer Funktionen und Korrekturen für iPhones bringt. Das Update enthält neue Emojis und EU-Nutzer können diese auch aus anderen App-Stores herunterladen. Darüber hinaus stärkt das Update auch die Kontrolle der iPhone-Sicherheit und führt weitere Einstellungsoptionen für den „Schutz gestohlener Geräte“ ein, um Benutzern mehr Auswahl und Schutz zu bieten. „iOS17.3 führt zum ersten Mal die Funktion „Schutz vor gestohlenen Geräten“ ein, die den vertraulichen Informationen der Benutzer zusätzliche Sicherheit verleiht. Wenn der Benutzer nicht zu Hause oder an anderen vertrauten Orten ist, erfordert diese Funktion, dass der Benutzer zum ersten Mal biometrische Informationen eingibt Zeit und nach einer Stunde müssen Sie Informationen erneut eingeben, um auf bestimmte Daten zuzugreifen und diese zu ändern, z. B. um Ihr Apple-ID-Passwort zu ändern oder den Schutz vor gestohlenen Geräten zu deaktivieren.

Planet Mojo: Aufbau eines Web3-Spiel-Metaversums aus dem Autoschachspiel Mojo Melee Planet Mojo: Aufbau eines Web3-Spiel-Metaversums aus dem Autoschachspiel Mojo Melee Mar 14, 2024 pm 05:55 PM

Beliebte Metaverse-Spieleprojekte, die im letzten Krypto-Zyklus gegründet wurden, beschleunigen ihre Expansion. Am 4. März kündigte PlanetMojo, die Web3-Spiele-Metaverse-Plattform, eine Reihe wichtiger Entwicklungen in seiner Spieleökologie an, darunter die Ankündigung des kommenden Parkour-Spiels GoGoMojo und den Start der neuen Staffel „Way of War“ im Flaggschiff-Autoschach Spiel MojoMelee und die Feier des neuen Die erste ETH-Serie „WarBannerNFT“ startete diese Saison in Zusammenarbeit mit MagicEden. Darüber hinaus gab PlanetMojo bekannt, dass sie planen, noch in diesem Jahr Android- und iOS-Mobilversionen von MojoMelee auf den Markt zu bringen. Dieses Projekt wird Ende 2021 gestartet. Nach fast zwei Jahren harter Arbeit in der Baisse wird es bald abgeschlossen sein.

Vereinfachen Sie die Datei-Upload-Verarbeitung mit Golang-Funktionen Vereinfachen Sie die Datei-Upload-Verarbeitung mit Golang-Funktionen May 02, 2024 pm 06:45 PM

Antwort: Ja, Golang bietet Funktionen, die das Hochladen von Dateien vereinfachen. Details: Der MultipartFile-Typ bietet Zugriff auf Dateimetadaten und -inhalte. Die FormFile-Funktion ruft eine bestimmte Datei aus der Formularanforderung ab. Die Funktionen ParseForm und ParseMultipartForm werden zum Parsen von Formulardaten und mehrteiligen Formulardaten verwendet. Die Verwendung dieser Funktionen vereinfacht den Dateiverarbeitungsprozess und ermöglicht Entwicklern, sich auf die Geschäftslogik zu konzentrieren.

See all articles