Kohana 3.0の紹介-パート7、8、9

Kohana PHP V3(KO3)を使用した一連の開発記事の第7部、第8部、および第9部をご覧ください。 前のパーツは、「 kohana 3.0に慣れている 」というラベルの下にあります。 この3-in-1の記事では、ヘルパー(ヘルパー)、モジュール、およびサードパーティライブラリの使用について説明します。



パート7:ヘルパー



Kohana 2.0のドキュメントでは、それらについて次の定義が提供されています。

ヘルパーは、開発を支援するために設計された便利な機能です。



それらはライブラリ関数に似ていますが、わずかな違いがあります。 ライブラリの場合、メソッドを使用するにはライブラリクラスのインスタンスを作成する必要があります。 ヘルパーは、フレームワークによって自動的にロードされるクラスの静的メソッドであるため、追加のアクションを実行する必要はありません。


つまり、本質的に、これらは、配列やURLの操作など、日常的な作業を「支援」するように設計された静的メソッドです。 Kohanaには既製のヘルパーがたくさんありますが、私たちは独自のヘルパーを作成します。 エディターを開き、開始します。



「/ application / classes」に新しい「helper」フォルダーを作成します。 新しいファイルを開き、そこに次を配置します。



<?php class Helper_MyUrl { public static function SEOIt($str) { $str = preg_replace(array('/\s/', '/[$.+!*\'(),"]/'), array('-', ""), $str); return $str; } }
      
      





これを、新しく作成したディレクトリ「/ application / classes / helper」に「myurl.php」として保存します。 「/application/views/pages/ko3.php」を開き、次の行を最後に追加します。



 <br /><?php echo Helper_MyUrl::SEOIt('This Is a string!!!');?>
      
      





保存後、ブラウザで「http:// localhost / mykohana3 / ko3 /」を開くと、下に「ThisIsastring」が表示されます。 とても簡単です!



翻訳者のメモ:これは公開された記事ではなく、この部分だけが本当に短いです。 仕方ない、ごめんなさい!



パート8:モジュール



モジュールは、フレームワークのコアを拡張したり、プロジェクトに新しいセクション(ブログやフォーラムなど)を追加したり、単にグローバルにアクセスできるクラスのセットを提供したりできるプラグインです。 さあ始めましょう!



「モジュール」フォルダーに「fortune」という名前の新しいディレクトリを作成します。 「モジュール/フォーチュン」内に「クラス」および「ビュー」フォルダーを作成します。 次に、「/ module / fortune / classes」でフォルダー「kohana」を作成し、「/ module / fortune / views」で「fortune」を作成します。 ディレクトリツリーは次のようになります。



 modules +-- fortune |-- classes | +-- kohana +-- views +-- fortune
      
      





フォルダ「/ module / fortune / classes /」で「fortune.php」ファイルを作成し、次のファイルをそこに入れます。



 <?php defined('SYSPATH') or die('No direct script access.'); class Fortune extends Kohana_Fortune{}
      
      





ここでは、引き続き作成するクラスを継承します。 新しいドキュメントを開き、そこにコードをコピーします。



 <?php defined('SYSPATH') or die('No direct script access.'); /** * Fortune Cookie Module */ class Kohana_Fortune { // Merged configuration settings protected $config = array('view' => 'fortune/default'); protected $fortune = ""; /** * Creates a new Fortune object. * * @return Fortune */ public static function factory(array $config = array()) { return new Fortune($config); } public function __construct(array $config = array()) { // Overwrite system defaults with application defaults $this->config = $this->config_group() + $this->config; } /** * Retrieves a fortune config group from the config file. One config group can * refer to another as its parent, which will be recursively loaded. * * @param STRING fortune config group; "default" if none given * @return ARRAY config settings */ public function config_group($group = 'default') { // Load the fortune config file $config_file = Kohana::config('fortune'); // Initialize the $config array $config = array('group' => (string)$group); // Recursively load requested config groups while(isset($config['group']) && isset($config_file->$config['group'])) { // Temporarily store config group name $group = $config['group']; unset($config['group']); // Add config group values, not overwriting existing keys $config += $config_file->$group; } // Get rid of possible stray config group names unset($config['group']); // Return the merged config group settings return $config; } /** * Randomly pick a fortune * * @return STRING fortune text */ public function getFortune() { // Stolen from: http://fortunes.cat-v.org/plan_9/ $fortunes = array('2 is always smaller than 3, even for large values of 2.', 'A penny saved is a political breakthrough.', 'Avoid reality at all costs.', 'Bad taste is timeless.'); $this->fortune = $fortunes[array_rand($fortunes, 1)]; } /** * Renders the fortune. * * @param MIXED string of the view to use, or a View object * @return STRING fortune output (HTML) */ public function render($view = NULL) { if($view === NULL) { // Use the view from config $view = $this->config['view']; } if(!$view instanceof View) { // Load the view file $view = View::factory($view); } $this->getFortune(); // Pass on the whole Fortune object return $view->set(get_object_vars($this))->set('page', $this)->render(); } /** * Renders the fortune. * * @return STRING fortune output (HTML) */ public function __toString() { return $this->render(); } }
      
      





これを「/ modules / fortune / classes / kohana」に「fortune.php」として保存します。 ほとんどの場合、クラスはKohanaのコアの複雑でない部分のように見えます。 保護されたタイプの2つのプロパティ、「config」と「fortune」があります。 実際、「Config」は設定を目的としており、「fortune」には1つのフォーチュン予測子(フォーチュンCookieの類似物を作成)が保存され、画面に表示されます。 次に、対応するパターンを実装するための「ファクトリー」メソッドと、「config」プロパティでいくつかの操作を実行するコンストラクターがあります。



クラスの中心はgetFortuneメソッドです。 ここでごまかしました。モデルを作成してデータベースからデータを取得する代わりに、単純に配列を使用しました。 ランダムな要素がそこから取得され、「フォーチュン」プロパティに書き込まれます。



次に、「render()」メソッドがあります。 「getFortune()」メソッドを実行し、ビューをレンダリングします。 これは、__ toString()メソッドによって呼び出されます。



次の内容で新しいファイルを作成します。



 <div style="width: 250px; height: 52px; vertical-align: middle; display: table-cell; text-align: center; border: 1px solid #CCCCCC; border-right-color: #666666; border-bottom-color: #666666;"> <p><?php echo $fortune;?></p> </div>
      
      





「/modules/fortune/views/fortune/default.php」に「default.php」として保存します。 ご覧のとおり、echoを介して$ fortune変数を出力します。これは、保護されたタイプのプロパティです。 これは、「render」メソッドですべてのプロパティをビューに渡した方が簡単だからです。



さらにいくつかのファイルを編集します。 「/application/bootstrap.php」を開き、「Kohana :: modules」というテキストが含まれるセクションを見つけます。 これに置き換えます:



 Kohana::modules(array(// 'auth' => MODPATH.'auth', // Basic authentication // 'codebench' => MODPATH.'codebench', // Benchmarking tool 'database' => MODPATH.'database', // Database access // 'image' => MODPATH.'image', // Image manipulation // 'orm' => MODPATH.'orm', // Object Relationship Mapping // 'pagination' => MODPATH.'pagination', // Paging of results // 'userguide' => MODPATH.'userguide', // User guide and API documentation 'fortune' => MODPATH.'fortune', ));
      
      





予測用のモジュールを追加し、フレームワークに含めました。 ファイル「/application/views/pages/ko3.php」を開き、行を最後に追加します。



 <?php echo Fortune::factory();?>
      
      





ブラウザで「http:// localhost / mykohana3 / ko3 /」を開くと、以下に運命の予測が表示されます。



パート9:サードパーティライブラリの使用



まず、「application」ディレクトリに「vendors」フォルダーを作成します。 「ベンダー」でフォルダー「Zend」を作成します(はい、大文字の「Z」で)。 次に、最新バージョンのZend Framework (Minimal Package)をダウンロードする必要があります 。公開時点では1.11.2です。 アーカイブを開き、「ZendFramework-1.11.2-minimal / library / Zend /」から「application / vendors / Zend」まですべてを抽出します。



ファイル「application / bootstrap.php」を開き、「echo Request :: getInstance()」行の上に次を追加します。



 $path = Kohana::find_file('vendors', 'Zend/Loader'); if($path) { ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . dirname(dirname($path))); require_once 'Zend/Loader/Autoloader.php'; Zend_Loader_Autoloader::getInstance(); }
      
      





「application / views / pages / ko3.php」を開き、下部に挿入します:



 <?php $validator = new Zend_Validate_Isbn();?> <br />978-3-16-148410-0 <?php echo ($validator->isValid('978-3-16-148410-0')) ? 'is' : 'is not';?> valid. <br />9783161484100 <?php echo ($validator->isValid('9783161484100')) ? 'is' : 'is not';?> valid.
      
      





「http:// localhost / mykohana3 / ko3」で、以下の2つのテストの結果が表示されます。



翻訳者のメモ:サイクルの作成者は後でフォームについて話すことを約束しましたが、2010年6月以降、新しい記事はありません。 これで、Kohana 3.0の探索は終了です。



All Articles