この記事では主に thinkPHP5.0 フレームワークの全体的なアーキテクチャを紹介し、thinkPHP5.0 のアプリケーション、モジュール、MVC、ドライバー、ビヘイビアー、名前空間などの概念と基本的な使い方を簡単に紹介します。必要な友人は参照してください。
この記事では、thinkPHP5.0 フレームワークの全体的なアーキテクチャについて説明します。参考のために皆さんと共有してください。詳細は次のとおりです。
ThinkPHP5.0 アプリケーションは、MVC (Model-View-Controller) メソッドに基づいて編成されています。
MVC は、アプリケーションの入力、処理、出力の分離を強制する設計パターンです。 MVC を使用するアプリケーションは、モデル (M)、ビュー (V)、およびコントローラー (C) の 3 つのコア コンポーネントに分割されており、それぞれが独自のタスクを処理します。
5.0 URL アクセスはルーティングによって決定されます。ルーティングがオフになっている場合、または一致するルートがない場合は、
http://serverName/index に基づきます。 .php (または他のアプリケーション エントリ ファイル)/module/controller/operation/parameter/value...
次の概念のいくつかを理解する必要があります。これらの概念については、以下でよく言及されます。内容と。
エントリ ファイル
ユーザーが要求した PHP ファイルは、リクエストのライフサイクルを処理します (最も一般的なのは URL リクエストではないことに注意してください)。エントリ ファイルは index.php
です。バックグラウンド モジュール admin.php
やコントローラ プログラム エントリ ## 用の別個のエントリ ファイルなど、特別なニーズのために新しいエントリ ファイルが追加される場合があります。 #think はすべてエントリ ファイルに属します。
アプリケーション
ThinkPHP のアプリケーションは、システム アーキテクチャとライフサイクルを管理するオブジェクトであり、システムの\think\App によって完成されます。通常、アプリケーションはエントリ ファイル内で呼び出され、同じアプリケーション ディレクトリ (
APP_PATH) を持つアプリケーションは同じアプリケーションとみなされますが、アプリケーションには複数のエントリ ファイルがある場合があります。
モジュール
一般的なアプリケーションは、複数のモジュールで構成されます。これらのモジュールは、通常、アプリケーション ディレクトリの下にあるサブディレクトリであり、それ自体は独立しています。ファイルとクラス ライブラリ ファイル。5.0 は、単一モジュール アーキテクチャ設計をサポートしています。アプリケーションにモジュールが 1 つしかない場合は、アプリケーション構成ファイルの を省略して変更できます。 ##
'app_multi_module' => false,
Controller
各モジュールには独立した MVC クラス ライブラリと設定ファイルがあり、1 つのモジュールの下に複数のコントローラーがあります。リクエストがあり、各コントローラーは実際には独立したコントローラー クラスです。
コントローラーは主に、リクエストの受信、関連するモデル処理の呼び出し、そして最終的にビューを介した出力を担当します。厳密に言えば、コントローラーはビジネス ロジックの処理にあまり関与すべきではありません。実際、5.0 ではコントローラーをスキップでき、ルーティングを通じてリクエストを特定のモデルまたは他のクラスに直接ディスパッチして処理できます。
5.0 のコントローラー クラスはより柔軟で、基本的なクラス ライブラリを継承する必要がありません。
典型的なインデックス コントローラー クラスは次のとおりです。namespace app\index\controller; class Index { public function index() { return 'hello,thinkphp!'; } }##Operation
コントローラーには複数のものが含まれます。操作(メソッド)であり、操作メソッドはURLアクセスの最小単位です。 次は、2 つの操作メソッドを含む一般的なインデックス コントローラー操作メソッドの定義です。
namespace app\index\controller; class Index { public function index() { return 'index'; } public function hello($name) { return 'Hello,'.$name; } }
操作メソッドは省略可能です。どのパラメーターでも使用できます。 、オプションではないパラメータが定義されている場合、そのパラメータはユーザー リクエストを通じて渡される必要があります。URL リクエストの場合、通常は $_GET または $_POST を通じて渡されます。
Modelモデル クラスは通常、実際のビジネス ロジックとデータのカプセル化を完了し、形式に関係なくデータを返します。
モデル クラスは必ずしもデータベースにアクセスする必要はありません。5.0 アーキテクチャ設計では、実際のデータベース クエリ操作が実行されるときにのみデータベース接続が行われます。これは真の遅延接続です。 。
ThinkPHP のモデル層は多層設計をサポートしており、モデル層を論理層/サービスに分割するなど、モデル層でより詳細な設計や分業を行うことができます。レイヤー/イベントレイヤーなど。
#View
ビューには通常、さまざまなコントローラーや操作方法に対応する一連のテンプレート ファイルがあり、テンプレート ディレクトリの動的設定をサポートします。
ドライバー
システムの多くのコンポーネントは、より柔軟に拡張できるドライバー設計を採用しており、ドライバー クラスの場所は、コア クラス ライブラリ ディレクトリの下に配置されます。ドライバー クラス ライブラリの名前空間を再定義し、ドライバーのファイルの場所を変更することもできます。 #########行動######行为(Behavior)是在预先定义好的一个应用位置执行的一些操作。类似于AOP编程中的“切面”的概念,给某一个切面绑定相关行为就成了一种类AOP编程的思想。所以,行为通常是和某个位置相关,行为的执行时间依赖于绑定到了哪个位置上。
要执行行为,首先要在应用程序中进行行为侦听,例如:
// 在app_init位置侦听行为 \think\Hook::listen('app_init');
然后对某个位置进行行为绑定:
// 绑定行为到app_init位置 \think\Hook::add('app_init','\app\index\behavior\Test');
一个位置上如果绑定了多个行为的,按照绑定的顺序依次执行,除非遇到中断。
命名空间
ThinkPHP5采用了PHP的命名空间进行类库文件的设计和规划,并且符合PSR-4
的自动加载规范。
相关推荐:
以上がthinkPHP5.0 フレームワークの全体的なアーキテクチャの概要 [アプリケーション、モジュール、MVC、ドライバー、動作、名前空間など]の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

深度学习的概念源于人工神经网络的研究,含有多个隐藏层的多层感知器是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示,以表征数据的类别或特征。它能够发现数据的分布式特征表示。深度学习是机器学习的一种,而机器学习是实现人工智能的必经之路。那么,各种深度学习的系统架构之间有哪些差别呢?1.全连接网络(FCN)完全连接网络(FCN)由一系列完全连接的层组成,每个层中的每个神经元都连接到另一层中的每个神经元。其主要优点是“结构不可知”,即不需要对输入做出特殊的假设。虽然这种结构不可知使得完

前段时间,一条指出谷歌大脑团队论文《AttentionIsAllYouNeed》中Transformer构架图与代码不一致的推文引发了大量的讨论。对于Sebastian的这一发现,有人认为属于无心之过,但同时也会令人感到奇怪。毕竟,考虑到Transformer论文的流行程度,这个不一致问题早就应该被提及1000次。SebastianRaschka在回答网友评论时说,「最最原始」的代码确实与架构图一致,但2017年提交的代码版本进行了修改,但同时没有更新架构图。这也是造成「不一致」讨论的根本原因。

面向视觉任务(如图像分类)的深度学习模型,通常用来自单一视觉域(如自然图像或计算机生成的图像)的数据进行端到端的训练。一般情况下,一个为多个领域完成视觉任务的应用程序需要为每个单独的领域建立多个模型,分别独立训练,不同领域之间不共享数据,在推理时,每个模型将处理特定领域的输入数据。即使是面向不同领域,这些模型之间的早期层的有些特征都是相似的,所以,对这些模型进行联合训练的效率更高。这能减少延迟和功耗,降低存储每个模型参数的内存成本,这种方法被称为多领域学习(MDL)。此外,MDL模型也可以优于单

这是一个AI赋能的时代,而机器学习则是实现AI的一种重要技术手段。那么,是否存在一个通用的通用的机器学习系统架构呢?在老码农的认知范围内,Anything is nothing,对系统架构而言尤其如此。但是,如果适用于大多数机器学习驱动的系统或用例,构建一个可扩展的、可靠的机器学习系统架构还是可能的。从机器学习生命周期的角度来看,这个所谓的通用架构涵盖了关键的机器学习阶段,从开发机器学习模型,到部署训练系统和服务系统到生产环境。我们可以尝试从10个要素的维度来描述这样的一个机器学习系统架构。1.

对于下一代集中式电子电器架构而言,采用central+zonal 中央计算单元与区域控制器布局已经成为各主机厂或者tier1玩家的必争选项,关于中央计算单元的架构方式,有三种方式:分离SOC、硬件隔离、软件虚拟化。集中式中央计算单元将整合自动驾驶,智能座舱和车辆控制三大域的核心业务功能,标准化的区域控制器主要有三个职责:电力分配、数据服务、区域网关。因此,中央计算单元将会集成一个高吞吐量的以太网交换机。随着整车集成化的程度越来越高,越来越多ECU的功能将会慢慢的被吸收到区域控制器当中。而平台化

eslint 使用eslint的生态链来规范开发者对js/ts基本语法的规范。防止团队的成员乱写. 这里主要使用到的eslint的包有以下几个: 使用的以下语句来按照依赖: 接下来需要对eslint的

人工智能(AI)已经改变了许多行业的游戏规则,使企业能够提高效率、决策制定和客户体验。随着人工智能的不断发展和变得越来越复杂,企业投资于合适的基础设施来支持其开发和部署至关重要。该基础设施的一个关键方面是IT和数据科学团队之间的协作,因为两者在确保人工智能计划的成功方面都发挥着关键作用。人工智能的快速发展导致对计算能力、存储和网络能力的需求不断增加。这种需求给传统IT基础架构带来了压力,而传统IT基础架构并非旨在处理AI所需的复杂和资源密集型工作负载。因此,企业现在正在寻求构建能够支持AI工作负

本文给大家介绍如何通过修改Nginx源码实现基于端口号的 Nginx worker进程隔离方案。看看到底怎么修改Nginx源码,还有Nginx事件循环、Nginx 进程模型、fork资源共享相关的知识。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

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

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

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