ステータス:非推奨

この記事では、サポートされなくなったバージョンのUbuntuについて説明します。 現在Ubuntu12.04を実行しているサーバーを運用している場合は、サポートされているバージョンのUbuntuにアップグレードまたは移行することを強くお勧めします。

理由: Ubuntu 12.04は2017年4月28日に保守終了(EOL)に達し、セキュリティパッチまたはアップデートを受信しなくなりました。 このガイドはもう維持されていません。

代わりに参照してください:
このガイドは参考として役立つかもしれませんが、他のUbuntuリリースでは機能しない可能性があります。 可能な場合は、使用しているUbuntuのバージョン用に作成されたガイドを使用することを強くお勧めします。 ページ上部の検索機能を使用して、より新しいバージョンを見つけることができます。

PhalconPHPについて


Phalcon は、Model-View-Controllerアーキテクチャを促進するPHPフレームワークであり、ORM、テンプレートエンジン、ルーティング、キャッシングなど、ソフトウェアに期待される多くのフレームワークのような機能を備えています。 。

このチュートリアルでは、Ubuntu 12.04 VPSにPhalconをインストールし、Phalconコントローラーを使用して最初の文字列を画面に印刷したときに、前回を中断したところから続行します。 このチュートリアルでは、他の2つのコアMVCコンポーネントであるビューとモデルの使用について説明します。

この記事を続けるために、前のチュートリアルで概説した手順を実行し、ブラウザで ip-address / project-を指定すると、Phalconアプリケーションが HelloWorldを出力することを前提としています。名前。 では、掘り下げてみましょう。

ビュー


前のチュートリアルでは、これを行う1つのメソッド(IndexAction)を使用してデフォルトのインデックスコントローラーを作成しました。

echo "<h1>Hello World!</h1>";

ご存知のように、これは画面に印刷するための最良の方法ではありません。 他のPHPフレームワークと同様に、Phalconには代わりに使用するテンプレートシステムが付属しています。 つまり、ビューを使用して、 HelloWorld文字列を変数を介してビューに渡すことができます。

これがPhalconで機能する方法は、 app / views フォルダーにコントローラーという名前の別のフォルダーを作成し、このフォルダー内にコントローラーのアクションにちなんで名付けられたファイルを作成する必要があることです。 このように、Phalconは、コントローラーアクションが呼び出されたときにこのビューを自動ロードします。 それでは、最初のコントローラー/アクションインデックスに対してこれを実行しましょう。 最初にフォルダを作成します。

mkdir /var/www/project_name/app/views/index

このフォルダー内に、phtml拡張子(コントローラーアクションにちなんで名付けられた)のファイルを作成します。

nano /var/www/project_name/app/views/index/index.phtml

このファイル内で、コントローラーからIndexActionの内容を切り取り、タグの間に貼り付けます。

<?php echo "<h1>Hello World!</h1>"; ?>

これで、コントローラーアクションは空になりますが、そのコントローラー/アクションに対応するビューから文字列が出力されます。 したがって、この短い例では、コントローラーからビューにまだ何も渡していないので、ビューが自動的にロードされる方法を示しただけです。 次に、コントローラーでその変数を宣言し、それをビューに渡して表示します。

IndexController に戻り、 indexAction メソッド内に、次のように貼り付けます(これがこの関数内にすべてあることを確認してください)。

$string = "Hello World!";
$this->view->setVar("string", $string);

最初の行では、テキスト値を $ string 変数に設定し、2番目の行では、 view()メソッドのsetVarメソッドを使用します。ビュー内でアクセスできる別の変数にこの変数を送信するための親コントローラークラス: $stringとも呼ばれます。

次に、ビューを編集して、これを置き換えます。

<?php echo "<h1>Hello World!</h1>"; ?>

これとともに:

<h1><?php echo $string; ?></h1>

これで、ブラウザでも同じことが表示されるはずです。 このように、ロジック(すべての目的と目的で動的に生成または取得できた文字列値)をプレゼンテーション(ビューで文字列をラップしたhtmlヘッダータグ)から分離しました。 これは、MVCアーキテクチャと優れた最新のプログラミング手法の信条の1つです。

モデルとデータベース


コントローラとビューを確認したので、データベースを接続して、モデルを使用してデータベースと対話する方法を見てみましょう。 ここから先に進むには、使用できるデータベースがすでにあり、そのアクセスクレデンシャルを知っており、基本的なMySQLコマンドに精通していることを前提としています。 そうでない場合は、このチュートリアルを確認してください。

データベースに接続するには、前の記事で作成したブートストラップファイル、public/フォルダーにあるindex.phpファイルを編集する必要があります。

nano /var/www/project_name/public/index.php

このブロックの下:

  //Setup a base URI so that all generated URIs include the "tutorial" folder
    $di->set('url', function(){
        $url = new \Phalcon\Mvc\Url();
        $url->setBaseUri('/project/');
        return $url;
    });

次のブロックを追加します。

  //Setup the database service
    $di->set('db', function(){
        return new \Phalcon\Db\Adapter\Pdo\Mysql(array(
            "host" => "localhost",
            "username" => "root",
            "password" => "password",
            "dbname" => "db-name"
        ));
    });

そしてもちろん、必要に応じてデータベース情報に置き換えてください。 ファイルを保存して終了します。 次に、最初のモデルをホストするテーブルを作成します。 それをarticlesと呼び、ID列、タイトル列、および本文列を付けましょう。 次のMySQLコマンドはあなたのためにそれを作成します。

CREATE TABLE `articles` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL,
  `body` text NOT NULL,
  PRIMARY KEY (`id`)
);

次に、コマンドラインに行を挿入して、何かを試してみましょう。 必要に応じて、このMySQLコマンドを使用して実行できます。

INSERT INTO `articles` (title, body)  VALUES ('This is the first article', 'some article body');

コンテンツができたので、Articleモデルを定義しましょう。 アプリケーションのapp/modelsフォルダーにphpファイルを作成します。

nano /var/www/project_name/app/models/Articles.php

そして、これを中に貼り付けます(終了phpタグを省略します):

<?php

class Articles extends \Phalcon\Mvc\Model {

}

現在、Phalconモデルクラスを拡張しています。これは、モデルデータを操作するための多くの便利な機能を提供します。 もう1つの優れた点は、データベーステーブルと同じようにクラスに名前を付けたため、2つはすでにリンクされていることです。 このモデルは、そのデータベーステーブルを参照します。

次に、モデルのプロパティ(テーブルの列にマップする)を宣言する必要があります。 したがって、クラス内に、次の保護されたプロパティを追加します。

public $id;

public $title;

public $body;

次に、これらの保護されたプロパティから取得したり、これらの保護されたプロパティに値を割り当てたりするためのセッター/ゲッターが必要です。 そして、ここでは、データへのアクセス方法を制御するための多くのことができます。 ただし、このチュートリアルではデータベースへの情報の追加については検討しないため、プロパティから既存の情報を取得するためのゲッター関数を1つだけ追加します。 したがって、以下ですが、モデルクラス内に、次のメソッドを追加します。

public function getId()    {
    return $this->id;
}

public function getTitle()    {
    return $this->title;
}

public function getBody()    {
    return $this->body;
}

ただし、通常はセッター関数も必要です。 このファイルを保存して、IndexControllerに戻りましょう。 IndexAction 内で、すべての内容を次のように置き換えます。

$article = Articles::findFirst(1);
$this->view->setVar("string", $article->getTitle());

最初の行では、Phalconモデルクラスの findFirst メソッドを使用し、そこから Articles モデルを拡張して、IDが1の記事を取得します。 次に、2番目の例では、前にモデルで宣言したgetter関数を使用して取得しているタイトル列の値をViewに渡します。 ファイルを保存してブラウザをリロードします。 最初の記事のタイトルが印刷されているはずです。

Phalconモデルクラスでできることをすべて説明することはできないので、ここで詳細を読むことをお勧めします。 すぐに使える機能とデータベースの抽象化がたくさんあり、迅速に作業を進めることができます。

結論


このチュートリアルでは、プロジェクトフォルダー構造に配置されたビューがPhalconによって自動的に読み込まれる方法と、コントローラーアクションからそれぞれのビューに情報を渡す方法について説明しました。 さらに、データベーステーブルを操作して情報を取得する方法を確認するために、小さなPhalconモデルを設定しました。

投稿者: Danny