ホームページ > バックエンド開発 > PHPチュートリアル > PHP 商用 MVC フレームワークを最初から構築する (2.1 パラメーター付きルーティング リクエスト)

PHP 商用 MVC フレームワークを最初から構築する (2.1 パラメーター付きルーティング リクエスト)

WBOY
リリース: 2016-06-23 13:36:00
オリジナル
944 人が閲覧しました

このセクションでは、実際に「ゼロからの PHP 商用 MVC フレームワークの構築」の実践段階に入ります。このセクションのタイトルは「ルーティング - パラメーターを使用したリクエスト」です。このセクションでは、最も基本的な MVC ルーティング アクセス制御を構築します。例:minyifei.cn/?_c=test&_a=getInfo は、TestController クラスの getInfo メソッドにアクセスし、コンテンツを正常に出力できます。

まず、最終的なプロジェクトのディレクトリ構造がどのようなものかを示し、それからファイルごとに紹介します。

まず、誰もがよく知っている、index.php を見てみましょう。プロジェクト全体、およびコードも非常に簡単です。フォワーダーとしてのコードは次のとおりです。

6

7

/**

* mvc入口index.php

* ユーザー: www.minyifei.cn

* 日付: 15/4/23

*/

require_once'myf/myf.php';

次に、mvc ディレクトリの function.php を見てみましょう。これは、さまざまなビジネス モジュールでの使用を容易にするために、グローバルに使用される関数をいくつか記述します。このセクションでは、パラメーターを取得するための getUrlString と getMvcRoute のみを記述しました。そしてルートパラメータを取得します。 function.php のコードは次のとおりです:

ヘルプ

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

/**

* mvc システム関数 function.php

* ユーザー: www.minyifei.cn

* 日付: 15/4/23

*/

/**

* 純粋な文字列を取得します

* @param $name

* @return null

*/

functiongetUrlString($name)

{

$value= filter_input(INPUT_GET,$name, FILTER_SANITIZE_URL) {

return $value; } else {

$ c = geturlstring( "_ c"); //デフォルトのコントローラーはインデックスです

if(empty($c)){

$c="インデックス";

}

//路由

$route=array(

"_a"=>$a,

"_c"=>$c,

);

//转换 _c = 'ab_cd' として _c='AbCd'

$cs=explode("_",$c);

for($index= 0;$index

$cs[$index] = ucfirst($cs[$index]);

}

$c= implode("",$cs);

$route["a"]=$a;

$route["c"]=$c;

return$route;

}

ここで定義するパラメータ ルーティング コントローラのアクセス パラメータは _c と _a で、それぞれアクセス コントローラとメソッドを表します。これらは自由に変更できます。 _c がアンダースコアでつながった文字列の場合、_c=Teacher_center&_a=detail とすると実際には TeacherCenterController のdetailメソッドにアクセスするという微妙な処理もあります。

依存クラス ライブラリのロードと単純なビジネス制御の実行を主に担当するコア コード myf.php を見てみましょう。 4

5

6

7 ヘルプ
8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

/**

* mvc コア クラス ライブラリ myf.php

* ユーザー: www.minyifei.cn

* 日付: 15/4/23

*/

//タイムゾーンを設定します

date_default_timezone_set('PRC');

//プロジェクトとパス

define('APP_PATH', dirname($_SERVER['SCRIPT_FILENAME']));

//プロジェクトの相対ディレクトリ

define("SITE_PATH", dirname($_SERVER['SCRIPT_NAME') ])) ;

//システム構成パス

define('APP_SYS_PATH', dirname(__FILE__));

define('APP_SITE_PATH', dirname(__FILE__));

//グローバル関数を参照します

require_once( APP_SYS_PATH."/functions.php");

//ルートリゾルバーを取得

$route= getMvcRoute();

//Controller

$mvcController=$route["c"]; / 実行メソッド

$mvcAction=$route["a"];

//コントローラーの命名規則は次のとおりです: mvcControllerFile= sprintf("%s/app/controller/%s.php",APP_PATH,$mvcControllerName );

if(file_exists($mvcControllerFile)){

//基本クラス コントローラーをロードします

require_onceAPP_SYS_PA TH."/controller .php";

$myfC=new$mvcControl; lerName();

//プレメソッドを実行します

$myfC->_before_action();️ -

echo「404 ページが見つかりません」;

}

コードも比較的簡単で、メモもわかりやすく書かれています。わからないことがあればメッセージを残すことができます。そして質問に答えます!

myf ディレクトリのcontroller.php を見てみましょう。このクラスには 3 つのメソッド (2 つの空のメソッドと 1 つのマジック メソッド) のみが定義されています。将来、テンプレート エンジンとシステム パラメーターの多くはこのクラスで初期化する必要があります。 。

1

2

3

4 5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

/**

* mvc コアクラスライブラリコントローラー.php

* ユーザー: www.minyifei.cn
* 日付: 15/4/23

*/

classController{

Public function_before_action() {

}

/**

* アクションの前に実行されるグローバル メソッド。継承およびリファクタリングが可能

*/

publicfunction_after_action() {

}

/**

* アクション後に実行されるグローバル メソッド。継承およびリファクタリングが可能

*/

public function__call($name,$arguments) {

echo" エラー URL 404";

}

}

OK ここまでで、最も単純なアクセス コントローラーのコア コードが完成しました。テスト用に 2 つのコントローラーを作成しましょう:
まず、デフォルトのコントローラーは app/controller/IndexController.php ファイルで、デフォルトのメソッドは Index メソッドです。

ヘルプ

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

/**

* ホーム IndexController.php

* ユーザー: minyifei

* 日付: 15/4/23

*/

classIndexControllerextendsController{

//ホームページのデフォルトメソッド

Publicfunctionindex(){

echo"Hello minyifei,I'm Index->​​index"

}

//テストメソッド

public functionhello( ){

echo「こんにちは、ミニフェイ、私」 m Index ->hello";

}

}

minyifei.cn にアクセスすると、IndexController.php のインデックス メソッドがトリガーされ、ブラウザーは次の出力を行います:

ヘルプ

minyifei.cn?_a=hello にアクセスすると、IndexController.php の hello メソッドがトリガーされ、ブラウザーは次の出力を行います:

Help

1

こんにちは、minyifei、私は Index->​​index です

1

ミニフェイさん、こんにちは。私はインデックスです->こんにちは

ヘルプ

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

/ **

* TestController.php をテストします

* ユーザー: minyifei

* 日付: 15/4/23

* 時間: 午後 2:15

*/

classTestControllerextendsController{

//テストは json オブジェクトを返します

publicfunctiongetInfo(){

$info=array(

“author”=>"minyifei" 、

“web” =>" http://www.minyifei.cn",

"teach"=>"PHP 商用 mvc フレームワークを最初から構築する",

header('Content-Type: application /json;

echojson_encode($info) }

}

TestController.php は、minyifei.cn?_c=test&_a=getInfo ページにアクセスすると、

Help

1

2

を出力する例です。

3

4

5

{

"author":"minyifei",

"web":" http://www.minyifei.cn",

"teach":"PHP 商用 mvc フレームワークを構築するこの時点で、このセクションの内容は基本的に完了です。また、このレッスンに関係するコードを oschina の git に公開しました。皆さんも Paizhuan をダウンロードしてください。

ダウンロードアドレスは:

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート