国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

ホームページ バックエンド開発 PHPチュートリアル PHP はルーティングとクラスの自動(dòng)ロードを?qū)g裝します

PHP はルーティングとクラスの自動(dòng)ロードを?qū)g裝します

Mar 24, 2018 pm 05:54 PM
php 負(fù)荷 自動(dòng)

今回は PHP ルーティングと クラス自動(dòng)ロード についてお屆けします。 PHP ルーティングとクラス自動(dòng)ロードの 注意事項(xiàng) について、実際のケースを見てみましょう。

プロジェクトディレクトリは以下の通りです

エントリーファイルindex.php

<?php
define(&#39;WEBROOT&#39;, &#39;C:/Users/Administrator/Documents/NetBeansProjects/test&#39;);
require_once(WEBROOT.&#39;/core/environment.php&#39;);
coreapp::run(); //

クラス自動(dòng)読み込みファイルenvironment.php

<?php
//根據(jù)類名來include文件
class loader {
  //找到對應(yīng)文件就include
  static function load($name) {
    $file = self::filepath($name);
    if ($file) {
      return include $file;
    }
  }
  static function filepath($name, $ext = &#39;.php&#39;) {
    if (!$ext) {
      $ext = &#39;.php&#39;;
    }
    $file = str_replace(&#39;&#39;, &#39;/&#39;, $name) . $ext; //類名轉(zhuǎn)路徑
    $path .= WEBROOT . &#39;/&#39; . $file;
    if (file_exists($path)) {
      return $path; //找到就返回
    }
    return null;
  }
}
spl_autoload_register(&#39;loader::load&#39;);

ここでのクラスの読み込みルールは coreapp::run() </ルートに対応する code> ディレクトリ /core/app.php の <code>run() メソッドは、spl_autoload_register() 関數(shù)を使用して、特定のクラス名の自動(dòng)ロードを?qū)g裝します。が呼び出されると、自動(dòng)的に実行されます。 < code>spl_autoload_register('loader::load') は、クラス名に従って、対応するクラス ファイルをインクルードします。 coreapp::run() 對應(yīng) 根目錄/core/app.php 的 run()方法,用到了spl_autoload_register()函數(shù)實(shí)現(xiàn)自動(dòng)加載,當(dāng)調(diào)用某個(gè)類名的時(shí)候,會(huì)自動(dòng)執(zhí)行spl_autoload_register(&#39;loader::load&#39;),根據(jù)類名include對應(yīng)的類文件。

app.php入口文件執(zhí)行的方法開始跑框架流程

<?php
class coreapp {
  static function run() {
    $a = $_SERVER[&#39;REQUEST_URI&#39;];
    $uri = rtrim(preg_replace(&#39;/\?.*/&#39;, &#39;&#39;, $_SERVER[&#39;REQUEST_URI&#39;]), &#39;/&#39;);
    $params = explode(&#39;/&#39;, trim($uri, &#39;/&#39;));
    $count = count($params);
    if ($count >?1)?{
??????$controller?=?$params[0];
??????$method?=?$params[1];
????}?elseif?($count?==?1)?{
??????$controller?=?'index';
??????$method?=?$params[0];
????}?else?{
????}
????$filename?=?WEBROOT?.?'/controller/'?.?$controller?.?'.php';
????$controller?=?'controller'.$controller;
????try?{
??????if?(!file_exists($filename))?{
????????throw?new?Exception('controller?'?.?$controller?.?'?is?not?exists!');
????????return;
??????}
??????include($filename);
??????if?(!class_exists($controller))?{
????????throw?new?Exception('class?'?.?$controller?.?'?is?not?exists');
????????return;
??????}
??????$obj?=?new?ReflectionClass($controller);
??????if?(!$obj->hasMethod($method))?{
????????throw?new?Exception('method?'?.?$method?.?'?is?not?exists');
????????return;
??????}
????}?catch?(Exception?$e)?{
??????echo?$e;?//展示錯(cuò)誤結(jié)果
??????return;
????}
????$newObj?=?new?$controller();
????call_user_func_array(array($newObj,?$method),?$params);
??}
}

根據(jù)請求uri去找對應(yīng)的controller, 用call_user_func_array()的方式調(diào)用controller里的方法

根目錄/controller/test.php

<?php
class?controllertest?{
??public?function?write($controller,?$method)?{
????//configtest::load('test');
????modeltest::write($controller,?$method);
??}
}

這里其實(shí)調(diào)用不一定要調(diào)用model里的test方法,可以調(diào)model目錄下的任意文件,在此之前可以去都讀一些config文件等等操作。

根目錄/model/test.php

<?php
class?modeltest?{
??public?function?write($model,?$method)?{
????echo?'From?controller:'.$model.'?to?model:?'?.?$model?.?'?,method:?'?.?$method;
??}
}

例如hostname/test/write 這個(gè)請求就會(huì)從入口文件進(jìn)來,經(jīng)過coreapp::run就會(huì)找到controller下對應(yīng)的的controllertest類,執(zhí)行write()

app.phpエントリファイルを?qū)g行するメソッドは、フレームワークプロセスの実行を開始します

rrreee

リクエストURIに従って対応するコントローラーを見つけ、call_user_func_array()を使用してコントローラー內(nèi)のメソッドを呼び出します

ルート ディレクトリ/コントローラー /test.php

rrreee 実際、ここでの呼び出しは必ずしもモデル內(nèi)のテスト メソッドを呼び出す必要はありません。その前に、いくつかの設(shè)定ファイルを読み取ることができます。およびその他の操作。
ルートディレクトリ/model/test.php

rrreee

たとえば、リクエストhostname/test/writeは、coreapp::runの後に、対応するcontrollertestを見つけます。コントローラーの下のクラスで、write() メソッドを?qū)g行しますこの記事の事例を読んだ後は、このメソッドを習(xí)得したと思います。さらに興味深い情報(bào)については、 に関する他の関連記事に注目してください。 PHPの中國語サイトです!

推奨読書:

PHPのキー値の保持+配列のマージの詳細(xì)な説明

??????Alibaba CloudにApacheおよびPHP環(huán)境をインストールする??????????ルーティングルールに従ってURLを生成するためのThinkphpメソッド???? ??

以上がPHP はルーティングとクラスの自動(dòng)ロードを?qū)g裝しますの詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

コメントする理由:PHPガイド コメントする理由:PHPガイド Jul 15, 2025 am 02:48 AM

phphastthreecommentStyles://,#forsingle-lineand/.../formulti-line.usecommentstoexplainwhycodeexists、whatittodo/fixmeitemsanddisablecodecodemcodecodecodecodemprianydedebugging.avoidoversingingsingingsingingsingingsingingsingingsingingsimmentingsimmentingsimplelatic.decratecentecentic.

PHPとは何ですか?それは何に使用されますか? PHPとは何ですか?それは何に使用されますか? Jul 16, 2025 am 03:45 AM

phpisaserver-sidesscriptinglanguageUsedforwebdevelopment、特にfordynamicwebsitesandcmsplatformslikewordpress.itrunsontheserver、processesdata、interactswithdatabases、andsendshtmltobrowsers.commonusesincludeurauthingication、e-commerceplatoblatoblotoftoflotfontiblotionforthentication

WindowsにPHPをインストールする方法 WindowsにPHPをインストールする方法 Jul 15, 2025 am 02:46 AM

WindowsにPHPをインストールするための重要な手順には次のものがあります。1。適切なPHPバージョンをダウンロードして解凍します。 apacheでthreadsafeバージョンまたはnginxを使用して非threadsafeバージョンを使用することをお?jiǎng)幛幛筏蓼埂?2。php.iniファイルを構(gòu)成し、php.ini-developmentまたはphp.ini-productionにphp.iniに名前を変更します。 3.コマンドラインの使用のために、システム環(huán)境変數(shù)パスにPHPパスを追加します。 4. PHPが正常にインストールされているかどうかをテストするには、コマンドラインを介してPHP-Vを?qū)g行し、組み込みサーバーを?qū)g行して解析機(jī)能をテストします。 5.Apacheを使用する場合、httpd.confでPを構(gòu)成する必要があります

最初のPHPスクリプト:実用的な紹介 最初のPHPスクリプト:実用的な紹介 Jul 16, 2025 am 03:42 AM

最初のPHPスクリプトの書き始め方法は?まず、ローカル開発環(huán)境をセットアップし、XAMPP/MAMP/LAMPをインストールし、テキストエディターを使用してサーバーの実行原則を理解します。第二に、hello.phpというファイルを作成し、基本コードを入力してテストを?qū)g行します。第三に、PHPとHTMLを使用して動(dòng)的なコンテンツ出力を?qū)g現(xiàn)することを?qū)Wびます。最後に、セミコロンの欠落、引用の問題、ファイル拡張エラーなどの一般的なエラーに注意し、デバッグのエラーレポートを有効にします。

PHPでファイル操作(読書/執(zhí)筆)をどのように処理しますか? PHPでファイル操作(読書/執(zhí)筆)をどのように処理しますか? Jul 16, 2025 am 03:48 AM

tohandlefileoperationsinphp、useappurcefunctionsandmodes.1.toreadafile、usefile_get_contents()forsmallfilesorfgets()inaloop forline-llineprocessing.2.towritetoafile、usefile_put_contents()forsimplewritesorappending withthefile_appendflag、orfwrite()w

PHP構(gòu)文:基本 PHP構(gòu)文:基本 Jul 15, 2025 am 02:46 AM

PHPの基本的な構(gòu)文には4つのキーポイントが含まれています。1。PHPタグを終了する必要があり、完全なタグの使用が推奨されます。 2。エコーと印刷は、一般的に出力コンテンツに使用されます。その中には、エコーは複數(shù)のパラメーターをサポートし、より効率的です。 3。注釈方法には、コードの読みやすさを改善するための//、#、//が含まれます。 4.各ステートメントはセミコロンで終了する必要があり、スペースとラインブレークは実行に影響を與えず、読みやすさに影響します。これらの基本的なルールを習(xí)得すると、明確で安定したPHPコードの作成に役立ちます。

PHP 8インストールガイド PHP 8インストールガイド Jul 16, 2025 am 03:41 AM

ubuntuにphp8をインストールする手順は次のとおりです。1。ソフトウェアパッケージリストを更新します。 2。PHP8および基本コンポーネントをインストールします。 3.バージョンを確認(rèn)して、インストールが成功していることを確認(rèn)します。 4.必要に応じて追加のモジュールをインストールします。 Windowsユーザーは、ZIPパッケージをダウンロードおよび解凍し、構(gòu)成ファイルを変更し、拡張機(jī)能を有効にし、環(huán)境変數(shù)へのパスを追加できます。 MacOSユーザーは、HomeBrewを使用してインストールし、TAPの追加、PHP8のインストール、デフォルトバージョンの設(shè)定、バージョンの検証などの手順を?qū)g行することをお?jiǎng)幛幛筏蓼?。インストール方法は異なるシステムで異なりますが、プロセスは明確であるため、目的に応じて適切な方法を選択できます。

Python他の例 Python他の例 Jul 15, 2025 am 02:55 AM

PythonのIfelseステートメントを書くための鍵は、論理構(gòu)造と詳細(xì)を理解することです。 1.インフラストラクチャは、條件が確立されている場合、コードを?qū)g行することです。 2.多條件判斷はElifで実施され、順次実行され、満たされると停止します。 3。ネストされている場合、さらに區(qū)畫の判斷に使用されている場合、2つの層を超えないことをお?jiǎng)幛幛筏蓼埂?4.単純なシナリオでは、単純なifelseを置き換えるために、三元式を使用できます。インデント、條件付き順序、論理的完全性に注意を払うことによってのみ、明確で安定した判斷コードを書くことができます。

See all articles