bootstrap/app.phpでvendor/laravel/framework/src/Illuminate/Foundation/Application.phpクラスをインスタンス化します
/** * 对于其中的instance register singleton 方法到时候单独拎出来说明 * * 1.设置基础路径 * 2.使用instance 方法 绑定app 和Illuminate\Foundation\Application类的关系 * 3.使用instance 方法 绑定Container 和Illuminate\Foundation\Application类的关系 * 4.app变量中注册事件服务EventServiceProvider * 5.app变量中注册日志服务LogServiceProvider * 6.app变量中注册路由服务RoutingServiceProvider * 7.别名的注册(vendor/laravel/framework/src/Illuminate/Foundation/Application.php文件中的 registerCoreContainerAliases 方法) */$app = new Illuminate\Foundation\Application( realpath(__DIR__.'/../') );
このクラスのマジックメソッド
public function __construct($basePath = null) { /** * 如果有传地址 设置基础路径 设置 * path $this->path() * path.base $this->basePath() * path.lang $this->langPath() * path.config $this->configPath() * path.public $this->publicPath() * path.storage $this->storagePath() * path.database $this->databasePath() * path.resources $this->resourcePath() * path.bootstrap $this->bootstrapPath() */ if ($basePath) { $this->setBasePath($basePath); } /** * 注册 app 和container到 instances数组中 */ $this->registerBaseBindings(); /** * 注册EventServiceProvider LogServiceProvider RoutingServiceProvider */ $this->registerBaseServiceProviders(); /** * 设置核心类的别名 */ $this->registerCoreContainerAliases(); }
登録されたアプリを表示し、コンテナー インスタンス配列内
protected function registerBaseBindings() { static::setInstance($this); /** * 由于初始化中 app没有添加到instances数组中 所以 不会执行build函数 只做了 instances数组中记录了app和$this */ $this->instance('app', $this); /** * 由于初始化中 Container没有添加到instances数组中 所以 不会执行build函数 只做了 instances数组中记录了app和$this */ $this->instance(Container::class, $this); }
今日のメインメソッドインスタンスを表示
public function instance($abstract, $instance) { /** * 如果aliases 数组总存在 则游离abstractAliases 数组 删除其中的存在的值 */ $this->removeAbstractAlias($abstract); /** * 判断 在bindings aliases instances其中有一个存现 则返回true */ $isBound = $this->bound($abstract); /** * 删除别名数组中对于的建 */ unset($this->aliases[$abstract]); // We'll check to determine if this type has been bound before, and if it has // we will fire the rebound callbacks registered with the container and it // can be updated with consuming classes that have gotten resolved here. /** * 在instances 数组中添加对于的建 */ $this->instances[$abstract] = $instance; /** * 如果之前存在实例化 则运行 */ if ($isBound) { $this->rebound($abstract); } }
最初のメソッドremoveAbstractAlias
/** * Remove an alias from the contextual binding alias cache. * * @param string $searched * @return void */ protected function removeAbstractAlias($searched) { /** * 如果在别名数组中不存在则直接返回 */ if (! isset($this->aliases[$searched])) { return; } /** * 游离抽象别名 吧存在抽象类别名数组中的存在的删除 * @example abstractAliases = ['nameabstract'=>['aliase1','aliases2']] */ foreach ($this->abstractAliases as $abstract => $aliases) { foreach ($aliases as $index => $alias) { if ($alias == $searched) { unset($this->abstractAliases[$abstract][$index]); } } } }
2番目の方法:バウンド
/** * Determine if the given abstract type has been bound. * * @param string $abstract * @return bool */ public function bound($abstract) { return isset($this->bindings[$abstract]) || isset($this->instances[$abstract]) || $this->isAlias($abstract); }3番目の方法:リバウンド
/** * Fire the "rebound" callbacks for the given abstract type. * * @param string $abstract * @return void */ protected function rebound($abstract) { /** * 主要实现的功能为 build 方法 实例化制定的类 并且返回该类 */ $instance = $this->make($abstract); /** * 查看reboundCallbacks 数组中是否存在该别名创建完成之后需要调用的方法数组 * 存在返回需要调用的方法数组 并且逐个执行 */ foreach ($this->getReboundCallbacks($abstract) as $callback) { call_user_func($callback, $this, $instance); } }
以上がLaravel 5.5) プロセスインスタンスメソッドのロードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

phpidentifiesauser'ssessionsingsinssessionCookiesIds.1)whensession_start()iscalled、phpgeneratesauniquesidstoredsored incoookienadphpsessidontheuser'sbrowser.2)thisidallowsphptortorieSessiondatadata fromthata

PHPセッションのセキュリティは、次の測定を通じて達成できます。1。session_regenerate_id()を使用して、ユーザーがログインまたは重要な操作である場合にセッションIDを再生します。 2. HTTPSプロトコルを介して送信セッションIDを暗号化します。 3。Session_Save_Path()を使用して、セッションデータを保存し、権限を正しく設定するためのSecure Directoryを指定します。

phpsessionFilesToredInthededirectoryspecifiedBysession.save_path、通常/tmponunix-likesystemsorc:\ windows \ temponwindows.tocustomizethis:1)uesession_save_path()tosetaCustomdirectory、ensuringit'swritadistradistradistradistradistra

toretrievedatafrompsession、Startthessession withsession_start()andAccessvariablesshe $ _SessionArray.forexample:1)Startthessession:session_start()

セッションを使用して効率的なショッピングカートシステムを構築する手順には、次のものがあります。1)セッションの定義と機能を理解します。セッションは、リクエスト全体でユーザーのステータスを維持するために使用されるサーバー側のストレージメカニズムです。 2)ショッピングカートに製品を追加するなど、基本的なセッション管理を実装します。 3)製品の量管理と削除をサポートし、高度な使用状況に拡大します。 4)セッションデータを持続し、安全なセッション識別子を使用することにより、パフォーマンスとセキュリティを最適化します。

この記事では、PHPでインターフェイスを作成、実装、および使用する方法について説明し、コード組織と保守性の利点に焦点を当てています。

この記事では、PHPのCrypt()とpassword_hash()の違いについて、パスワードハッシュの違いについて説明し、最新のWebアプリケーションの実装、セキュリティ、および適合性に焦点を当てています。

記事では、入力検証、出力エンコード、およびOWASP ESAPIやHTML浄化器などのツールを使用して、PHPのクロスサイトスクリプト(XSS)を防止します。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

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

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

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

ホットトピック









