PHPフレームワーク開発2(SPLライブラリとコントローラ)
PHP フレームワーク開発 2 (SPL ライブラリとコントローラー)
上記のディレクトリ構成に従います (よくわからない場合は、前の記事を読んでください)。 simpleフォルダーに新しいsimple.php.
を作成しました<p>require 'includes/exceptions.php'; require 'includes/autoloader.php'; session_start();</p><p>//$view = new view(); lib::set_item('controller' , new controller()); lib::get_item('controller' , lib::PERSIST_STORGE)->render(); //$content = $view->finish();</p>
この章では主に SPL について説明するため、index.php に
を追加するときの autoloader.php の 2 行目のみを確認します。require 'simple/simple.php';
その後。
autoloader.php のソースコードを見てみましょう
<?php class autoloader{ public static function includesautoloader($class){ $path = defined('SIMPLE_PATH') ? SIMPLE_PATH : $_SERVER['DOCUMENT_ROOT']; $file_name = $path . '/includes/' . $class . '.php'; if(is_readable($file_name)) require $file_name; } public static function modulesautoloader($class){ $path = defined('SIMPLE_PATH') ? SIMPLE_PATH : $_SERVER['DOCUMENT_ROOT']; $file_name = $path . '/modules/' . $class . '.php'; if(is_readable($file_name)) require $file_name; } public static function controllerautoloader($class){ $path = defined('SIMPLE_PATH') ? SIMPLE_PATH : $_SERVER['DOCUMENT_ROOT']; $file_name = $path . '/controller/' . $class . '.php'; if(is_readable($file_name)) require $file_name; } } spl_autoload_register('autoloader::includesautoloader'); spl_autoload_register('autoloader::modulesautoloader'); spl_autoload_register('autoloader::controllerautoloader');
このクラスは静的メソッドであり、この PHP ファイルが参照されると、プログラムはこれら 3 つのフォルダーの内容を自動的にロードするため、繰り返し要求したりインクルードしたりする必要はありません。 SPL について何も知らない場合は、直接 Baidu にアクセスしてください。この SPL には幅広い機能があることだけをお伝えしておきます。
次に、includes フォルダーに新しい lib.php を作成します
<?php class lib{ const SETTING_ARRAY = true; const PERSIST_STORGE = false; public static function set_item($name , $value , $is_array = false){ if($is_array){ $_SESSION[$name] = array(); $_SESSION[$name][] = $value; } else{ $_SESSION[$name] = $value; } } public static function get_item($name , $persist = true){ $result = null; if(isset($_SESSION[$name])){ $result = $_SESSION[$name]; } if(!$persist){ unset($_SESSION[$name]); } return $result; } public static function sendto($url = ''){ if(empty($url)){ $url = '/'; } die(header('Location:' . $url)); } }
このクラスは現在、SESSION 関連のコンテンツを設定するためにのみ使用されます。
lib::set_item('controller', newcontroller()); が実行されると、ここで新しいコントローラー オブジェクトが作成され、そのオブジェクトが SESSION に保存されます。
controller.php
<?php class controller{ //URL部分 protected $parts; //方法参数 protected $params; public function __construct(){ $this->parts = array(); $this->analysis(); } public function analysis(){ $path_info = $_SERVER['PATH_INFO']; if(substr($path_info , 0 , 1) == '/'){ $path_info = substr($path_info , 1); } $parts = explode('/' , $path_info); if(empty($parts[0])) $parts[0] = 'index'; if(empty($parts[1])) $parts[1] = 'demo'; $this->parts = $parts; array_shift($parts); array_shift($parts); $this->params = $parts; } public function render(){ if(!class_exists($this->parts[0])){ throw new ControllerDoesntExistsException($this->parts[0] . ' not exists!'); } if(!method_exists($this->parts[0] , $this->parts[1])){ throw new ActionDoesntExistsException($this->parts[0] . 'of ' . $this->parts[1] . ' not exists!'); } $new_controller = new $this->parts[0]; $called = call_user_func_array(array($new_controller , $this->parts[1]) , $this->params); if($called === false){ throw new ActionFailedException($this->parts[0] . 'of ' . $this->parts[1] . ' failed to excute property!'); } } }
このクラスは、PATH_INFO モードのみを使用して呼び出し側コントローラーと ACTION を取得し、パラメーターを対応する ACTION メソッドに渡します。コントローラーが初期化されると、PATH_INFO の内容が自動的に分析されます。
lib::get_item('controller' , lib::PERSIST_STORGE)->render();
次に render() を呼び出すと、対応するコントローラー ディレクトリでコントローラーと ACTION が見つかります。
たとえば、コントローラーフォルダーに新しいindex.phpを作成します
<?php class index{ public function demo(){ echo "sdfsdf"; } }
次に http://localhost/index.php/index/demo を実行すると、「sdfsdf」が出力されます (これは私のローカル パスです)。
上記のコードは難しいものではありません。わからない場合は、PHP 公式 Web サイトにアクセスして、対応する関数の使用方法を見つけることもできます。
次のセクションでは、ビューについて簡単に説明します。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています
