目次
Zend Framework+smarty の使用例、zendsmarty の詳細な説明
興味があるかもしれない記事:
ホームページ バックエンド開発 PHPチュートリアル Zend Framework+smarty の使用例の詳細説明、zendsmarty_PHP チュートリアル

Zend Framework+smarty の使用例の詳細説明、zendsmarty_PHP チュートリアル

Jul 12, 2016 am 08:56 AM
framework smarty zend

Zend Framework+smarty の使用例、zendsmarty の詳細な説明

この記事の例では、Zend Framework+smarty の使用例について説明します。参考のために皆さんと共有してください。詳細は次のとおりです:

1. Zend フレームワークの概要

Zend Framework は Model-View-Controller (MVC) 構造を使用します。これは、プログラムをさまざまな部分に分割し、開発とメンテナンスを容易にするために使用されます。

Zend Framework の実行には次のものが必要です: PHP 5.1.4 (またはそれ以降)、Web サーバーは mod_rewrite 関数をサポートし、この例では Apache を使用します。 ここ http://framework.zend.com/download から Zend Framework をダウンロードします。形式は .zip または .tar.gz の 2 つがあります。

2. Zend フレームワークの構成

1. ディレクトリ構造

Zend Framework は標準のディレクトリ構造を使用することを要求していませんが、依然としていくつかの共通のディレクトリ構造が存在します。このディレクトリ構造は、Apache の構成を完全に制御できることを前提としています。 (以下ではこのマシンを例として使用します。状況に応じて変更を加える必要があります。私のサーバーのルート ディレクトリは Web フォルダーを指します)

引用:

ウェブ/ テスト/
/ウェブアプリ
/コントローラー
/モデル
/テンプレート
/templates_c
/図書館
/ウェブルート
/画像
/js
/css

プログラム内のモデル、ビュー、コントローラー ファイルを異なるサブディレクトリに分離しました。サポートされている画像、スクリプト、CSS ファイルは、webroot ディレクトリの下のさまざまなサブディレクトリに保存されています。ダウンロードした Zend Framework ファイルはライブラリ ディレクトリに配置されます。他のライブラリ ファイルが必要な場合は、ここに配置できます。この例では、Smarty テンプレート テクノロジを使用しているため、Smarty ライブラリ ファイルもライブラリ ファイルの下に配置する必要があります。

2. スタートアップファイル

1) .htaccessを設定します

プログラムへのアクセスには単一のエントリ ファイルindex.phpを使用します。これにより、プログラム内のすべてのページの中心点が提供され、実行環境が正しく構成されていることを確認できます。この目的を達成するために .htaccess ファイルを使用します。次の内容の .htaccess ファイルを test のルート ディレクトリに追加します。 リーリー

2) Apache を構成する

同時に、Apache の設定をいくつか行って、Apache 設定ファイル httpd.conf を開く必要もあります。


1.「#LoadModule rewrite_module modules/mod_rewrite.so」という文を見つけて、その前の # を削除します。

2. 次に、「AllowOverride None」を見つけて「AllowOverride All」に変更し、Apache を再起動します。

3. ファイルindex.phpを開始します

index.php は test のルートディレクトリに配置されます。index.php の内容は次のとおりです。:

リーリー

4) 起動ファイルの説明


Zend Framework は、すべてのファイルが include_path に含まれるように設計されています。また、後でモデル クラスを簡単にロードできるように、モデル ディレクトリをインクルード パスに含めます。まず、Zend_Loader クラスにアクセスできるように、Zend/Loader.php をインクルードする必要があります。Zend_Loader クラスには、他の Zend Framework クラスをロードできる静的メソッドがあります。たとえば、次のとおりです。 リーリー

Zend_Loader::loadClass は、指定されたクラスをロードします。これは、アンダースコアをパス区切り文字に変換し、最後に .php 接尾辞を追加することによって実装されます。このようにして、クラス Zend_Controller_Front が Zend/Controller/font.php からロードされます。クラス ライブラリで同じ命名規則を使用している場合は、Zend_Loader::loadCass() を使用してそれらをロードできます。コントローラー クラスとルーティング クラスをロードする必要があります。

フロントエンド コントローラーはルーティング クラスを使用して、要求された URL を正しい PHP 関数にマップし、ページを表示します。ルーティングが機能するためには、URL のどの部分が Index.php へのパスであるかを解決し、その時点以降の URL 要素を検索できるようにする必要があります。

どのディレクトリでコントローラーを探すかを認識できるように、フロントエンド ルーターを構成する必要があります。

リーリー

例外をスローするように設定しますが、サーバーが実際に動作した後は、ユーザーにエラー メッセージを表示すべきではありません。

リーリー

この例では Smarty テンプレート テクノロジーを使用しているためです。したがって、ZF 自体に付属するビューを閉じます。 $frontController->setParam('noViewRenderer', true); 後でジャンプするための URL を設定しやすくするために、ベース アドレスを設定します。 $frontController->setBaseUrl('/test');Zend_Registry::set('font', $frontController);次に、Smarty をセットアップします。まず、クラス ライブラリの Smarty.class.php クラスを参照しました。そして、その経路は政府がその位置を把握できるように設定されています。 :

リーリー

ここでは、ZF のオブジェクト レジストリ (レジストリ) を使用して $view を保存し、プログラム内の他のパーティから $view を呼び出して操作を実行できるようにします。 Zend_Registry::set('views', $views); 設定後、プログラムを実行します。 $frontController->dispatch();

この時点で、 http://127.0.0.1/test を実行してテストします。 「致命的エラー: キャッチされない例外 'Zend_Controller_Dispatcher_Exception' とメッセージ '無効なコントローラーが指定されました (インデックス)' 」のようなエラーが表示されます。これは、プログラムがまだセットアップされていないためです。

3. セットアッププログラム

在设置文件以前,理解Zend Framework 如何组织页面很重要。每个应用程序的页面叫做 action ,许多 action 组成控制器。例如,对于这样一个格式的 URL http://localhost/test/news/view/id/1 来说,控制器是news, action 是view,后面的id和1,分别是往这个actionView传递的参数和值。

Zend Framework 控制器把 index 作为一个缺省的action 而保留为特别的action。这样,对于http://localhost/test/news/ 这样的url,在news控制器里的 index action将被执行。Zend Framework 也保留了一个缺省的控制器,也叫做index。这样,http://localhost/test/ 将执行 index控制器下的 action index。

4、设置控制器

现在可以设置控制器了。在Zend Framework 里,控制器是一个必需被叫做{Controller name}Controller 的类。注意{Controller name}必需以大写字母开头。并且,这个类必须在叫做{Controller name}Controller.php这样的文件中,这个文件还必需在特定的控制器目录中。强调一下,{Controller name}必需以大写字母开头并其他字母一定是小写。每个action是在控制器类里的public 函数,名字必需是{action name}Action。在这里,{action name}应该以小写字母开头。这样在文件 test/webapp/controllers/IndexController.php 里我们的控制器类叫做 IndexController,位置:test/webapp/controllers/IndexController.php:

<&#63;php 
class IndexController extends Zend_Controller_Action 
{ 
function init()
{
} 
function indexAction() 
{ 
} 
function addAction() 
{ 
} 
} 
&#63;>

ログイン後にコピー

我们现在有三个我们想使用的action,直到我们设置好视图,它们才工作。其中function init是个特殊的函数,简单的说,它就是在controller中的构造函数时调用的函数。

每个action的 URL 如下:

http://localhost/test/ in IndexController::indexAction()
http://localhost/test/index/add in IndexController::addAction()

现在,我们在程序里有个能工作的路由器和每个页面的 action。

5、设置视图

因为本实例使用的的是Smarty模版,所以和ZF本身的View视图在实现过程中,稍微有点区别!下面我直接介绍在ZF里是任何使用Smarty的。在使用Smarty之前,我们应该先取出在index.php里定义的$view,并且定义好,需要在模版显示的变量。:

class IndexController extends Zend_Controller_Action 
{ 
var $views; /*模板对象*/
var $data; /*传递模版变量的对象*/
function init()
{
//拿回注册过的对象
$this->views = Zend_Registry::get('views'); 
} 
function indexAction() 
{ 
//定义模版显示的变量 
$data[`title′]=〞hello world〞;
//传递变量到模版
$this->views->assign($data);
//显示模版
$this->views->display('index/index.tpl'); 
} 
function addAction() 
{ 
} 
}

ログイン後にコピー

下面我们开始做视图文件,它们的位置是test/webapp/templates/index/index.tpl:

代码:

{$title}

ログイン後にコピー

这个时候,输入http://127.0.0.1/test看看。应该会出现“hello world 了。

这样,一个简单的实例就完成了。下面我们结合Xmlrpc技术来实现一个稍微复杂一点的实例!

三、XMLRPC

1、什么是XMLRPC

XMLRPC,顾名思义,就是应用了XML技术的RPC。那么什么是XML和RPC了?

RPC是Remote Procedure Call的缩写,翻译成中文就是远程过程调用,是一种在本地的机器上调用远端机器上的一个过程(方法)的技术,这个过程也被大家称为“分布式计算 ,是为了提高各个分立机器的“互操作性 而发明出来的技术。

XML和RPC一样也是一个东西的缩写,这个东西就是eXtensible Markup Language,中文意思就是可扩展标记语言,标记语言就是那种用尖括号(<>)括来括去的那种语言,比如说HTML。XML的可扩展性也体现在它只定义了语言的格式,而并没有定义过多的关键字,也就是通常所说的标记(Tag),所以用户可以自由地选择定义标记。它的这种自由和简单的语法规则也使得它广为流传,用来表示各种数据。

2、在ZF中使用XMLRPC

1)创建IndexController.php

下面我们来完成一个实例,为了方便起见,就不建立新的Controller,把刚才我们建立的IndexController修改一下,就能使用了!另外我们还需要建立一个XMLRPC的服务端程序。位置在WEB服务器的根目录上(在本机中,也就是在test文件的上级目录中,取名为1.php),由于XMLRPC使用到了类库,我们还需要下载libphpxmlrpc放在library文件夹下!

文件位置:test/webapp/controller/IndexController.php:

class IndexController extends Zend_Controller_Action 
{
var $views; /*模板对象*/
var $data; /*传递模版变量的对象*/
public function init()
{
//拿回注册过的对象
$this->views = Zend_Registry::get('views'); 
$this->font = Zend_Registry::get('font'); 
//得到基地址 
$this->baseurl=$this->font->getBaseUrl();
}
function indexAction() 
{ 
@include "libphpxmlrpc/xmlrpc.inc";
@include "libphpxmlrpc/xmlrpcs.inc"; 
if (isset($_POST['var1']) && isset($_POST['var2'])) 
{ 
//创建客户端
$client = new xmlrpc_client('http://127.0.0.1/1.php');
//创建一个实例
@ $msg = new xmlrpcmsg("add", array(
new xmlrpcval($_POST['var1'], "int"),
new xmlrpcval($_POST['var2'], "int")));
//发送信息,
$response=$client->send($xmlrpc_message);,服务器返回xmlrpcresp的一个实例
$retval = $client->send($msg);
if ($retval->faultCode()) 
{
print_r("发生一个错误: "); 
print_r("原因: " . htmlspecialchars($retval->faultString())); 
} 
else 
{
//$retval->value()获取应答的xmlrpcval(也就是服务器端返回的结果),
$retval->value()->scalarval();得到描述应答结果的PHP变量
$sum = $retval->value()->scalarval();
}
}
@$data['var1']=$_POST['var1'];
@$data['var2']=$_POST['var2'];
@$data['sum']=$sum; 
@$data[`action′]= "$this->baseurl/index/"; 
//构造完整的url给模版 
$time=date("Y-m-d H:i:s")
@$data['url']="$this->baseurl/index/add/id/$sum/time/$time"; 
/传递变量到模版
$this->views->assign($data);
//显示模版
$this->views->display('index/index.tpl'); 
} 
function addAction() 
{ 
$data['title']="实验一下"; 
//得到传递的值 
$id=$this->_request->getParam("id");
$time=$this->_request->getParam("time"); 
$data['id']="$id";
$data['time']="$time";
$this->views->assign($data);
$this->views->display('index/add.tpl'); 
}
}

ログイン後にコピー

2)创建显示模版文件

位置:test/webapp/templates/index/index.tpl:

hello,下面演示的是利用Xmlrpc调用远程服务器方法的实例!并且我们把得到的结果传递到另外的一个函数中去!

代码:

{if $sum}
点一下看看!
{/if}

ログイン後にコピー

位置: test/webapp/templates/index/add.tpl:

现在是{$time}
{$title}你刚才传递的是 {$id}

ログイン後にコピー

3)创建XMLRPC服务器端程序

位置:web/1.php:

<&#63;php
@include ("libphpxmlrpc/xmlrpc.inc");
@include ("libphpxmlrpc/xmlrpcs.inc");
if ($_SERVER['REQUEST_METHOD'] != 'POST')
{
exit(0);
}
$add_sig = array(array($xmlrpcString, $xmlrpcInt, $xmlrpcInt));
$add_doc = "Add the two integer together";
function add($params)
{
//引入用户错误代码值
global $xmlrpcerruser;
//返回一个PHP数组
$val = php_xmlrpc_decode($params);
$ret = $val[0] + $val[1];
return new xmlrpcresp(new xmlrpcval($ret, "int"));
}
//创建一个xmlrpc_server的实例:
$server = new xmlrpc_server(array(
"add" => array(
"function" => "add",
"signature" => $add_sig,
"docstring" => $add_doc
)));
&#63;>

ログイン後にコピー

OK,现在打开http;//127.0.0.1/test/看看。刚才建立的那个XMLRPC应该已经建立起来了,输入数字,测试一下吧!

さらに Zend 関連のコンテンツに興味のある読者は、このサイトの特別トピックをチェックしてください: "Zend FrameWork Framework 入門チュートリアル"、"php 優れた開発フレームワークの概要"、"Yii Framework Getting Started and Summary of Common Techniques"、" ThinkPHP入門チュートリアル』、『PHPオブジェクト指向プログラミング入門チュートリアル』、『php+mysqlデータベース操作入門チュートリアル』、『php共通データベース操作スキルまとめ』

この記事が皆さんのzendフレームワークをベースにしたPHPプログラムの設計に役立つことを願っています。

興味があるかもしれない記事:

  • とても使いやすい Zend Framework ページング クラス
  • Zend Framework のカスタム ヘルパー クラスに関する注意事項のまとめ
  • Zend Framework チュートリアルでの Bootstrap クラスの使用法の概要
  • の基本Zend Framework チュートリアルのアクション Zend_Controller_Action クラスの詳細な説明
  • Zend Framework がクラスを自動的にロードする方法の分析
  • Zend Framework が検証コードを生成し、検証コード検証関数を実装します (デモのソース コードのダウンロード付き)
  • Zend Framework フレームワークの Zend_Mail が検証を実装しますメール送信機能とタイトル文字化けの解決方法
  • Zend Framework チュートリアル Zend_Form コンポーネントはフォーム送信を実装し、エラー プロンプトを表示
  • Zend Framework は複数のファイル アップロード機能を実装するサンプル
  • Zend Framework と最初の Hello World を始めるための環境構成例 (デモソースコードのダウンロード付き)
  • Zend Framework 入門知識のまとめ
  • Zend Framework の基本的なページ レイアウト分析
  • Zend Framework ページング クラスの使用方法の詳細な説明

www.bkjia.com本当http://www.bkjia.com/PHPjc/1111890.html技術記事 Zend Framework+smarty の使用例を詳しく解説、zendsmarty この記事では、Zend Framework+smarty の使用例を例を挙げて説明します。参考のために皆さんと共有してください。詳細は次のとおりです: 1. Zend Framework の紹介...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

Microsoft NET Framework のインストールの問題エラー コード 0x800c0006 の修正 Microsoft NET Framework のインストールの問題エラー コード 0x800c0006 の修正 May 05, 2023 pm 04:01 PM

開発者とエンド ユーザーが Windows 上で最新バージョンのアプリケーションを実行するには、.NET Framework 4 が必要です。しかし、.NET Framework 4 のダウンロードとインストール中に、多くのユーザーから、インストーラーが途中で停止し、「ダウンロードがエラー コード 0x800c0006 で失敗したため、.NET Framework 4 はインストールされていません」というエラー メッセージが表示されるという苦情が寄せられました。デバイスに .NETFramework4 をインストールしているときにもこの問題が発生する場合は、正しい場所にいます。

Windows 11/10 で SetupDiag を使用して Windows アップグレードの問題を特定する方法 Windows 11/10 で SetupDiag を使用して Windows アップグレードの問題を特定する方法 Apr 17, 2023 am 10:07 AM

Windows 11 または Windows 10 PC でアップグレードまたはアップデートの問題が発生すると、通常、失敗の背後にある実際の理由を示すエラー コードが表示されます。ただし、エラー コードが表示されずにアップグレードまたはアップデートが失敗すると、混乱が生じることがあります。便利なエラー コードを使用すると、問題の場所が正確にわかるので、修正を試みることができます。ただし、エラー コードが表示されないため、問題を特定して解決することが困難になります。エラーの背後にある理由を見つけるだけでも多くの時間がかかります。この場合、Microsoft が提供する SetupDiag という専用ツールを使用すると、エラーの背後にある本当の理由を簡単に特定できます。

SCNotification が動作を停止しました [問題を解決する 5 つのステップ] SCNotification が動作を停止しました [問題を解決する 5 つのステップ] May 17, 2023 pm 09:35 PM

Windows ユーザーは、コンピュータを起動するたびに「SCNotification は動作を停止しました」というエラーに遭遇する可能性があります。 SCNotification.exe は Microsoft システム通知ファイルであり、アクセス許可エラーやネットワーク障害が原因で PC を起動するたびにクラッシュします。このエラーは、問題のあるイベント名でも知られています。したがって、これは SCNotification が動作を停止したということではなく、バグ clr20r3 として認識される可能性があります。この記事では、SCNotification が動作を停止した問題を修正して再び悩まされないようにするために必要なすべての手順を説明します。 SCNotification.eとは何ですか

Microsoft .NET Framework 4.5.2、4.6、および 4.6.1 は 2022 年 4 月にサポートを終了します Microsoft .NET Framework 4.5.2、4.6、および 4.6.1 は 2022 年 4 月にサポートを終了します Apr 17, 2023 pm 02:25 PM

Microsoft.NET バージョン 4.5.2、4.6、または 4.6.1 をインストールしている Microsoft Windows ユーザーが、将来の製品更新を通じて Microsoft にフレームワークをサポートさせることを希望する場合は、新しいバージョンの Microsoft Framework をインストールする必要があります。 Microsoft によると、3 つのフレームワークはすべて 2022 年 4 月 26 日にサポートを終了します。サポート期限が終了すると、製品は「セキュリティ修正またはテクニカル サポート」を受けられなくなります。ほとんどのホーム デバイスは、Windows アップデートを通じて最新の状態に保たれます。これらのデバイスには、.NET Framework 4.8 などの新しいバージョンのフレームワークがすでにインストールされています。自動的に更新されないデバイスは、

Windows 11 の KB5012643 により .NET Framework 3.5 アプリが中断される Windows 11 の KB5012643 により .NET Framework 3.5 アプリが中断される May 09, 2023 pm 01:07 PM

Windows 11 に KB5012643 をインストールしたユーザーに影響を与える新しいセーフ モードのバグについてお話ししてから 1 週間が経過しました。このやっかいな問題は、Microsoft が発売日に投稿した既知の問題のリストには載っていなかったので、誰もが驚きました。さて、事態がこれ以上悪化するはずはないと思ったそのとき、Microsoft は、この累積的な更新プログラムをインストールしたユーザーに別の爆弾を投下します。 Windows 11 Build 22000.652 はさらなる問題を引き起こす そこで同社は、Windows 11 ユーザーに対し、一部の .NET Framework 3.5 アプリケーションの起動と使用に問題が発生する可能性があると警告しています。おなじみですね?でも驚かないでください

Zend Framework でのアクセス許可制御に ACL (アクセス コントロール リスト) を使用する方法 Zend Framework でのアクセス許可制御に ACL (アクセス コントロール リスト) を使用する方法 Jul 29, 2023 am 09:24 AM

Zend Framework でのアクセス許可制御に ACL (AccessControlList) を使用する方法 はじめに: Web アプリケーションでは、アクセス許可制御は重要な機能です。これにより、ユーザーはアクセスを許可されたページと機能にのみアクセスできるようになり、不正アクセスが防止されます。 Zend フレームワークは、ACL (AccessControlList) コンポーネントを使用してアクセス許可制御を実装する便利な方法を提供します。この記事では、Zend Framework で ACL を使用する方法を紹介します。

PHP 実装フレームワーク: Zend Framework 入門チュートリアル PHP 実装フレームワーク: Zend Framework 入門チュートリアル Jun 19, 2023 am 08:09 AM

PHP 実装フレームワーク: ZendFramework 入門チュートリアル ZendFramework は、PHP によって開発されたオープン ソースの Web サイト フレームワークであり、現在 ZendTechnologies によって保守されています。ZendFramework は、MVC デザイン パターンを採用し、Web2.0 アプリケーションと Web サーブの実装に役立つ一連の再利用可能なコード ライブラリを提供します。 。 ZendFramework は PHP 開発者に非常に人気があり、尊敬されており、幅広い機能を備えています。

Cooler Master と Framework が、ラップトップのマザーボードと互換性のある革新的なミニケース キットを発売 Cooler Master と Framework が、ラップトップのマザーボードと互換性のある革新的なミニケース キットを発売 Dec 15, 2023 pm 05:35 PM

12月9日のニュースによると、Cooler Masterは最近、台北コンピューティングショーでのデモンストレーションイベントで、ノートブックモジュラーソリューションプロバイダーのFrameworkと協力して、ミニシャーシキットをデモしました。このキットのユニークな点は、マザーボードと互換性があり、マザーボードを取り付けることができることです。フレームワークノートから。現在、この製品は市場で販売が開始されており、価格は39ドル、現在の為替レートで約279元に相当します。このシャーシキットの型番は「frameWORKMAINBOARDCASE」となります。デザイン面では、わずか297x133x15mmという究極のコンパクトさと実用性を実現しています。そのオリジナルのデザインは、フレームワーク ノートブックにシームレスに接続できるようにすることです。

See all articles