目次
入口文件
重写规则
配置文件
控制器
视图文件

开始yaf之旅

Jun 13, 2016 am 11:30 AM
a index.php public yaf 始める 目次 構造

目录结构

+ public  <span //</span><span 网站根目录</span>
   - index.php <span //</span><span 入口文件</span>
   - .htaccess <span //</span><span 重写规则    </span>
+<span  conf
  </span>|- application.ini <span //</span><span 配置文件   </span>
application/
  +<span  controllers
     </span>- Index.php <span //</span><span 默认控制器</span>
  +<span  views    
     </span>|+ index   <span //</span><span 控制器</span>
        - index.phtml <span //</span><span 默认视图</span>
  + modules <span //</span><span 其他模块</span>
  - library    <span //</span><span 组件目录</span>
  - models  <span //</span><span model目录</span>
  - plugins <span //</span><span 插件目录</span>
ログイン後にコピー

入口文件

入口文件是所有请求的入口, 一般都借助于rewrite规则, 把所有的请求都重定向到这个入口文件.

一个经典的入口文件public/index.php

<?<span php
</span><span define</span>("APP_PATH",  <span realpath</span>(<span dirname</span>(<span __FILE__</span>) . '/../')); <span /*</span><span  指向public的上一级 </span><span */</span>
<span $app</span>  = <span new</span> Yaf_Application(APP_PATH . "/conf/application.ini"<span );
</span><span $app</span>->run();
ログイン後にコピー

重写规则

除非我们使用基于query string的路由协议(Yaf_Route_Simple, Yaf_Route_Supervar), 否则我们就需要使用WebServer提供的Rewrite规则, 把所有这个应用的请求, 都定向到上面提到的入口文件.

修改.htaccess文件

Nginx的Rewrite (nginx.conf)

<span server {
  listen </span><span 80</span><span ;
  server_name  yaf.demo.com;
  root   document_root;
  index  index.php index.html index.htm;

  </span><span if</span> (!-<span e $request_filename) {
    rewrite </span>^/(.*)  /index.php/$<span 1</span><span  last;
  }
}</span>
ログイン後にコピー

配置文件

在Yaf中, 配置文件支持继承, 支持分节. 并对PHP的常量进行支持. 你不用担心配置文件太大造成解析性能问题, 因为Yaf会在第一个运行的时候载入配置文件, 把格式化后的内容保持在内存中. 直到配置文件有了修改, 才会再次载入.

一个简单的配置文件application/conf/application.ini

<span [common]
application.directory </span>= APP_PATH  <span "</span><span /application</span><span "</span><span 
application.dispatcher.catchException </span>= <span 0</span><span 
application.dispatcher.throwException </span>= <span 0</span><span 
application.view.ext </span>= <span '</span><span phtml</span><span '</span><span 
[product : common]
;enable the error controller
application.dispatcher.catchException</span>=<span 1</span>
ログイン後にコピー

控制器

在Yaf中, 默认的模块/控制器/动作, 都是以Index命名的, 当然,这是可通过配置文件修改的.

对于默认模块, 控制器的目录是在application目录下的controllers目录下, Action的命名规则是"名字+Action"

默认控制器application/controllers/Index.php

<?<span php
</span><span class</span> IndexController <span extends</span><span  Yaf_Controller_Abstract {
   </span><span public</span> <span function</span> indexAction() {<span //</span><span 默认Action</span>
       <span $this</span>->getView()->assign("content", "Hello World"<span );
   }
}
</span>?>
ログイン後にコピー

视图文件

Yaf支持简单的视图引擎, 并且支持用户自定义自己的视图引擎, 比如Smarty.

对于默认模块, 视图文件的路径是在application目录下的views目录中以小写的action名的目录中.

一个默认Action的视图application/views/index/index.phtml

<html>
 <head>
   <title>Hello yaf</title>
 </head>
 <body>
  <?php <span echo</span> <span $content</span>;?>
 </body>
</html>
ログイン後にコピー

然后在浏览器输入nginx.conf设置的servername,

表 4.2. Yaf可选配置项

名称值类型默认值说明
application.ext String php PHP脚本的扩展名
application.bootstrap String Bootstrapplication.php Bootstrap路径(绝对路径)
application.library String application.directory + "/library" 本地(自身)类库的绝对目录地址
application.baseUri String NULL 在路由中, 需要忽略的路径前缀, 一般不需要设置, Yaf会自动判断.
application.dispatcher.defaultModule String index 默认的模块
application.dispatcher.throwException Bool True 在出错的时候, 是否抛出异常
application.dispatcher.catchException Bool False 是否使用默认的异常捕获Controller, 如果开启, 在有未捕获的异常的时候, 控制权会交给ErrorController的errorAction方法, 可以通过$request->getException()获得此异常对象
application.dispatcher.defaultController String index 默认的控制器
application.dispatcher.defaultAction String index 默认的动作
application.view.ext String phtml 视图模板扩展名
application.modules String Index 声明存在的模块名, 请注意, 如果你要定义这个值, 一定要定义Index Module
application.system.* String * 通过这个属性, 可以修改yaf的runtime configure, 比如application.system.lowcase_path, 但是请注意只有PHP_INI_ALL的配置项才可以在这里被修改, 此选项从2.2.0开始引入

<em id="__mceDel"><em id="__mceDel"><span <br /><br /></span></em></em>
ログイン後にコピー
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Googleドキュメントに目次を挿入する方法 Googleドキュメントに目次を挿入する方法 Apr 13, 2023 pm 08:16 PM

記事、論文、チュートリアルのいずれであっても、ドキュメントの主なハイライトはタイトル、そしてもちろん目次です。これは、ユーザーが文書のどこから何を読みたいのかを理解できるように、文書の概要構造を説明します。また、ほとんどの文書に目次を追加して、文書をよりプロフェッショナルに見せることもベスト プラクティスです。今日では、すべてがオンラインで行われ、ほとんどのドキュメントの作成に Google ドキュメントが使用されています。多くのユーザーは、Google ドキュメントに目次を挿入または追加する方法がまだわかりません。したがって、この記事では、Google ドキュメントで目次を作成または挿入する方法を説明します。 Google ドキュメントに目次を挿入する方法 ステップ 1: ここをクリックして Google ドキュメント オンラインにアクセスします。ステップ 2: 場合

Java の File.isDirectory() 関数を使用して、ファイルが存在するかどうか、またディレクトリ タイプであるかどうかを確認します。 Java の File.isDirectory() 関数を使用して、ファイルが存在するかどうか、またディレクトリ タイプであるかどうかを確認します。 Jul 24, 2023 pm 06:57 PM

Java の File.isDirectory() 関数を使用して、ファイルが存在し、ディレクトリ タイプであるかどうかを確認します。Java プログラミングでは、ファイルが存在し、ディレクトリ タイプであるかどうかを確認する必要がある状況によく遭遇します。 Java には、ファイルやディレクトリを操作するための File クラスが用意されており、isDirectory() 関数は、ファイルがディレクトリ タイプであるかどうかを判断するのに役立ちます。 File.isDirectory() 関数は File クラスのメソッドであり、その機能は現在のファイルを確認することです。

PHP 関数の紹介 - rename(): ファイルまたはディレクトリの名前を変更する PHP 関数の紹介 - rename(): ファイルまたはディレクトリの名前を変更する Jul 25, 2023 pm 12:10 PM

PHP 関数の紹介 - rename(): ファイルまたはディレクトリの名前変更 はじめに: PHP では、rename() 関数を使用してファイルまたはディレクトリの名前を変更します。ファイルまたはディレクトリの名前を簡単に変更する方法を提供します。単一のファイルであっても、ディレクトリ全体であっても、この関数を使用して名前変更操作を実行できます。名前変更プロセスは、ソース ファイルまたはディレクトリの名前とターゲット名を指定することで簡単に実行できます。構文: boolrename(string$source,str

PHP の glob() 関数は、ファイルまたはディレクトリを検索するために使用されます。 PHP の glob() 関数は、ファイルまたはディレクトリを検索するために使用されます。 Nov 18, 2023 pm 06:17 PM

PHP の glob() 関数は、ファイルまたはディレクトリを検索するために使用され、強力なファイル操作関数です。指定されたパターン一致に基づいてファイルまたはディレクトリのパスを返すことができます。 glob() 関数の構文は次のとおりです。 glob(pattern, flags) ここで、 pattern は照合するパターン文字列を表し、*.txt (.txt で終わるファイルの照合) などのワイルドカード式にすることができます。特定のファイルパス。 flags は、関数を制御するために使用されるオプションのパラメータです。

iOS の開発者バージョンとパブリック バージョンの違いは何ですか? iOS の開発者バージョンとパブリック バージョンの違いは何ですか? Mar 01, 2024 pm 12:55 PM

毎年、Apple が iOS と macOS の新しいメジャー バージョンをリリースする前に、ユーザーは数か月前にベータ版をダウンロードして最初に体験することができます。同ソフトウェアは一般ユーザーと開発者の両方が使用するため、Appleは開発者向けベータ版のパブリックベータ版である開発者版とパブリック版を両方向けに開始した。 iOS の開発者バージョンとパブリック バージョンの違いは何ですか?文字通りに言うと、開発者バージョンは開発者テスト バージョンであり、パブリック バージョンは公開テスト バージョンです。開発者バージョンとパブリック バージョンは、異なるユーザーを対象としています。開発者バージョンは、Apple が開発者によるテストのために使用します。ダウンロードしてアップグレードするには、Apple 開発者アカウントが必要です。

WeChatで読む場合のカタログの見方 カタログの見方 WeChatで読む場合のカタログの見方 カタログの見方 Mar 30, 2024 pm 05:56 PM

WeChat Reading App のモバイル版は非常に優れた読書ソフトウェアです。このソフトウェアにはたくさんの書籍や作品が含まれています。ワンクリックでオンラインで検索して読むだけでいつでもどこでも読むことができます。すべて公式に認可されており、異なります。本の種類もきれいに並べられており、ゆっくりと本を読みながら快適に読書を楽しむことができます。さまざまなシナリオの読書モードを切り替え、書籍の最新章を毎日継続的に更新し、複数のデバイスからのオンライン ログインをサポートし、本棚への一括ダウンロードをサポートします。インターネットの有無にかかわらず読むことができるため、誰もがそこからより多くの知識を発見できます編集者がオンラインで詳細を説明 WeChat 読書パートナー向けにカタログの閲覧方法を宣伝します。 1. カタログを表示したい本を開き、本の中央をクリックします。 2. 左下隅にある三本線のアイコンをクリックします。 3. ポップアップ ウィンドウで書籍カタログを表示します。

ディレクトリを自動生成する方法 自動生成されるディレクトリの形式を設定する方法 ディレクトリを自動生成する方法 自動生成されるディレクトリの形式を設定する方法 Feb 22, 2024 pm 03:30 PM

Wordでカタログのスタイルを選択すると、操作完了後に自動生成されます。分析 1. コンピューター上の Word に移動し、クリックしてインポートします。 2入力後、ファイルディレクトリをクリックします。 3 次に、ディレクトリのスタイルを選択します。 4. 操作が完了すると、ファイル ディレクトリが自動的に生成されることがわかります。補足: 概要/メモ記事の目次は、第 1 レベルの見出し、第 2 レベルの見出し、および第 3 レベルの見出しを含めて自動的に生成されます (通常は第 3 レベルの見出しまでです)。

path/filepath.Split 関数を使用して、パスをディレクトリとファイル名の部分に分割します。 path/filepath.Split 関数を使用して、パスをディレクトリとファイル名の部分に分割します。 Jul 25, 2023 pm 05:57 PM

path/filepath.Split 関数を使用して、パスをディレクトリとファイル名の 2 つの部分に分割します。プログラムの開発またはファイルの処理では、パスをディレクトリとファイル名の 2 つの部分に分割することが必要になることがよくあります。 Go 言語では、パス/ファイルパス パッケージの Split 関数を使用してこの機能を実現できます。この記事では、Split 関数の使い方とコード例を紹介します。 Split 関数は次のように定義されます。 funcSplit(pathstring)(di

See all articles