LoginSignup
1
0

More than 5 years have passed since last update.

Phalcon Modelによるデータベース操作 - 準備編

Posted at

Hell@World、いつもいつも自分用にメモを残したくて、ブログとかはじめてみても、途中で「やっぱなんか作りまくった方が早いわ」と、半日坊主だったりして、同じ関数を何度も調べ直すハメになるため、今回こそは準備に時間をかけてみます。

プログラミングとか、2年離れていると、いくら記事で新しい技術の流行を知り、導入、入門あたりまで眺めてみても、自分の頭じゃ手を動かさないとダメなんだと、今まさに自分のために言い聞かせています。

「おい、お前の処理能力はソロバンより弱いんだから手を動かせ、それで大体やってきた」

自己暗示です。

環境は専用のローカルサーバに、Cent7, PHP7, Nginx with php-fpm, Phalcon3, MariaDBという、入門検索ランキング第一位の組み合わせでセットアップ済みです。

それではなにしろデータソースがないとはじまらないので適当なエンティティを用意したいと思います。

「phalcon データベース」というなんともひねりのないキーワードで検索すると、Phalcon公式の「モデルの働き」というものがある。
んじゃこれから行くかと、もうすでに効率が悪そうな手順を踏みます。

PhalconのORMは、Phalcon\Mvc\Modelを継承した対応するテーブル名のクラスを作成し、publicでズラズラ並べるか、getter/setterするかは好きにしろとあります。

順番通り、まずは全部publicのメンバとして定義していきます。
クラス名はキャメルケースと、これも王道のパターン。

まぁエンティティということで適当なファイルシステムもどきのデータということにしてみましょう。

あ。boolいれちゃったんで、これだけゲセッタで。

use Phalcon\Mvc\Model;

class Entity extends Phalcon\Mvc\Model {
    public $uid;
    protected $isDirectory // false: 0, true: 1
    public $name;
    //public $isSymlink;
    //public $target;
    //public $size;
    //public $lastModified;
    //public $permission;
    //public $owner
    //public $group

    public getIsDirectory {
        return $this->isDirectory == 1;
    }
    public setIsDirectory ($val) {
        $this->isDirectory = $val ? 1 : 0;
    }
}

書き終わって、「いやこんなにいらねぇだろ」ということで最初の3つだけ使います。

create table entity 
(
    uid int not null primary key auto_increment,
    type int(1) not null,
    name varchar(128) not null
);

適当にデータを追加します。

insert into `entity` values(null, 1, 'js');
insert into `entity` values(null, 1, 'img');
insert into `entity` values(null, 1, 'css');
insert into `entity` values(null, 0, 'index.php');
insert into `entity` values(null, 0, '.htaccess');

これで準備は整った、のか?

続きは次回

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0