PHP框架3(视图)

Jun 13, 2016 am 10:36 AM
gt lt public type view

PHP框架三(视图)

上一节我们简单地实现了控制器。这一节我们实现一下视图。

这个视图文件非常简单。主要利用的就是ob_start() ,ob_get_content();这个文件位于includes文件夹内

view.php

<?phpclass view{	//视图类型 default / wap 	public static $view_type = null;		public function __construct(){		ob_start();	}		public function finish(){		$content = ob_get_contents();		return $content;	}		public static function set_view_type(){		switch(true){			case stripos($_SERVER['HTTP_USER_AGENT'], 'Windows CE') !== FALSE : self::$view_type = 'wap'; break;			default : self::$view_type = 'default';		}	}		public static function show($location , $param = array()){		if(is_null(self::$view_type)){			self::set_view_type();		}				$view = SIMPLE_PATH . '/view/' . self::$view_type . '/' . $location;				extract($param, EXTR_OVERWRITE);		ob_start();		file_exists($view) ? require $view : exit($view . ' 不存在');		$content = ob_get_contents();		return $content;	}}
ログイン後にコピー

对于OB函数,我们可以简单地认为,在PHP编译之后,它不会立刻返回到页面,而是先放到缓冲区。

上述视图只是做了一个简单的实现,如果我们要扩展它,可以完善set_view_type()方法,也可以增加缓存,还可以增加模板的支持。

具体实现我会在以后的章节加上,今天我们试着使用一下这个VIEW。

还是昨天controller文件夹下的index.php 文件

<?phpclass index{		public function demo(){		view::show('index.htm' ,  array('message' => 'HELLO WORLD'));	}}
ログイン後にコピー

然后再在view文件夹内新建一个default文件夹,再在新建一个index.htm

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

我们运行站点,便可以看到结果,“HELLO WORLD”。

我觉得这个结果,便是每个程序员对新的思想的一种见证。

如果在这个文件中,你还想插入头部,或尾部,只要再新建一个head.htm。然后再在index.htm中加入

<html><head><title></title></head><body>	<?php 	echo $message;	view::show('head.htm');?></body></html>
ログイン後にコピー

就可以实现公共部分的加入了。

至此,我们这个小型的视图类就实现了。

大家可自行去实验,如果不行,我们再交流。

下一节就是我以前在BLOG里介绍的DAO层,即MODULES。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

Huawei GT3 ProとGT4の違いは何ですか? Huawei GT3 ProとGT4の違いは何ですか? Dec 29, 2023 pm 02:27 PM

多くのユーザーはスマートウォッチを選ぶときにファーウェイブランドを選択しますが、その中でもファーウェイ GT3pro と GT4 は非常に人気のある選択肢であり、多くのユーザーはファーウェイ GT3pro と GT4 の違いに興味を持っています。 Huawei GT3pro と GT4 の違いは何ですか? 1. 外観 GT4: 46mm と 41mm、材質はガラスミラー + ステンレススチールボディ + 高解像度ファイバーバックシェルです。 GT3pro: 46.6mm および 42.9mm、材質はサファイアガラス + チタンボディ/セラミックボディ + セラミックバックシェルです。 2. 健全な GT4: 最新の Huawei Truseen5.5+ アルゴリズムを使用すると、結果はより正確になります。 GT3pro: ECG 心電図と血管と安全性を追加

修正: Windows 11 で Snipping ツールが機能しない 修正: Windows 11 で Snipping ツールが機能しない Aug 24, 2023 am 09:48 AM

Windows 11 で Snipping Tool が機能しない理由 問題の根本原因を理解すると、適切な解決策を見つけるのに役立ちます。 Snipping Tool が正しく動作しない主な理由は次のとおりです。 フォーカス アシスタントがオンになっている: これにより、Snipping Tool が開かなくなります。破損したアプリケーション: 起動時にスニッピング ツールがクラッシュする場合は、破損している可能性があります。古いグラフィック ドライバー: 互換性のないドライバーは、スニッピング ツールに干渉する可能性があります。他のアプリケーションからの干渉: 実行中の他のアプリケーションが Snipping Tool と競合する可能性があります。証明書の有効期限が切れています: アップグレード プロセス中のエラーにより、この問題が発生する可能性があります。これらの簡単な解決策は、ほとんどのユーザーに適しており、特別な技術知識は必要ありません。 1. Windows および Microsoft Store アプリを更新する

Go での Type キーワードの用途は何ですか? Go での Type キーワードの用途は何ですか? Sep 06, 2023 am 09:58 AM

Go での Type キーワードの使用には、新しい型エイリアスの定義または新しい構造型の作成が含まれます。詳細な導入: 1. 型エイリアス。既存の型のエイリアスを作成するには、「type」キーワードを使用します。このエイリアスは新しい型を作成しませんが、既存の型に新しい名前を提供するだけです。型エイリアスはコードを改善できます。コードの可読性により、コードがより明確になります; 2. 構造タイプ。新しい構造タイプを作成するには、「type」キーワードを使用します。構造は、複数のフィールドを含むカスタム タイプを定義するために使用できる複合タイプです。

Ubuntu のモバイル ハードディスク エラーの解決: ファイル システム タイプ exfat が不明です Ubuntu のモバイル ハードディスク エラーの解決: ファイル システム タイプ exfat が不明です Jan 05, 2024 pm 01:18 PM

Ubuntu がモバイル ハードディスクをマウントするとエラーが発生します: mount:knownfilesystemtype'exfat' 処理方法は次のとおりです: Ubuntu13.10 または exfat-fuse をインストール: sudoapt-getinstallexfat-fuseUbuntu13.04 以下 sudoapt-add-repositoryppa:relan /exfatsudoapt-getupdatesudoapt-getinstallfuse- exfatCentOS Linux マウント exfat フォーマットの USB ディスク エラー解決方法 CentOS で extfa をロードする

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

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

Laravel 開発: Laravel View を使用してビューを生成するには? Laravel 開発: Laravel View を使用してビューを生成するには? Jun 14, 2023 pm 03:28 PM

Laravel は現在最も人気のある PHP フレームワークの 1 つであり、その強力なビュー生成機能は印象的です。ビューは、Web アプリケーションでユーザーに表示されるページまたは視覚要素であり、HTML、CSS、JavaScript などのコードが含まれています。 LaravelView を使用すると、開発者は構造化テンプレート言語を使用して Web ページを構築し、コントローラーとルーティングを通じて対応するビューを生成できます。この記事では、LaravelView を使用してビューを生成する方法を説明します。 1. 何を

iPhoneでApp Storeに接続できないエラーを修正する方法 iPhoneでApp Storeに接続できないエラーを修正する方法 Jul 29, 2023 am 08:22 AM

パート 1: 最初のトラブルシューティング手順 Apple のシステムステータスを確認する: 複雑な解決策を掘り下げる前に、基本から始めましょう。問題はデバイスにあるのではなく、Apple のサーバーがダウンしている可能性があります。 Apple のシステム ステータス ページにアクセスして、AppStore が適切に動作しているかどうかを確認してください。問題があれば、Apple が修正してくれるのを待つしかありません。インターネット接続を確認します。「AppStore に接続できません」問題は接続不良が原因である場合があるため、安定したインターネット接続があることを確認してください。 Wi-Fi とモバイル データを切り替えるか、ネットワーク設定をリセットしてみてください ([一般] > [リセット] > [ネットワーク設定のリセット] > [設定])。 iOS バージョンを更新します。

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

See all articles