raspberryPiでcakePHPフレームワークを使ってみる

2019年8月2日

先ずはここら辺の cakePHP に関する情報を読み込みフレームワークの概要を大体つかむ。

 

 

そして、具体的に作成する工程を学習したいと思う。
今回はデータベースとのやり取り(MODEL)と画面表示(VIEW)の関連を学びたい。
そこで、次のサイトの教材を参考に学習をしてみました。

 

始めに MySQL にデータベースとユーザ、テーブルを作成するSQL文を記述したファイルを作成する。

[ファイル名:dbuserAdd.sql]
CREATE DATABASE sampledb;
CREATE USER ‘sampledbuser’@’localhost’ IDENTIFIED BY ‘password’;
GRANT ALL PRIVILEGES ON sampledb.* TO ‘sampledbuser’@’localhost’;
FLUSH PRIVILEGES;
SHOW DATABASES;
SELECT host, user, password FROM mysql.user;

[ファイル名:tableAdd.sql]
use sampledb;
CREATE TABLE user (id int, name varchar(20));
show tables;
SHOW COLUMNS FROM user;
INSERT INTO user (id, name) VALUES (1, ‘yamada’);
SELECT * FROM user;
INSERT INTO user (id, name) VALUES (2, ‘takahashi’);
SELECT * FROM user;

これらのファイルは cakePHPをインストールしたディレクトリ に作成する。

MySQLに学習で使用するデータベース・ユーザ・テーブルを作成する。

$ cd [cakePHPをインストールしたディレクトリ]
$ sudo mysql -u root -p < dbuserAdd.sql
$ mysql -u sampledbuser -p < tableAdd.sql
※パスワード入力を施されたら入力する。

cakePHPのMySQLデータベースパラメータを設定する

[cakePHPをインストールしたディレクトリ]/config/app.php ファイルを開いて次の箇所を変更する。

‘username’ => ‘sampledbuser’,
‘password’ => ‘password’,
‘database’ => ‘sampledb’,

cakePHPフレームワークの MVC ファイルを作成する

MVCに必要なファイルを bake する。するとひな形のフォルダやファイルを作成してくれます。このコマンドを使用した場合は以後は既に出来上がっているファイルの内容を変更する作業となります。(linuxのコマンドに慣れている方は cd / mkdir / chmod / vi 等のコマンドでファイルを作成していってもかまいません。その場合はこの作業は必ずしも必要ではありません。ファイル名を間違えないように注意する必要があります。)
$ php bin/cake.php bake controller Sample
$ php bin/cake.php bake model User
$ php bin/cake.php bake template Sample

 

[M(Model)ファイル:src/Model/Table/UserTable.php] <?php
namespace App\Model\Table;
use Cake\ORM\Table;
use Cake\Validation\Validator;
class UserTable extends Table {
public function validationDefault(Validator $validator) {
$validator->notEmpty(‘id’,’username’);
return $validator;
}
}
?>

ファイル名の赤い文字部分[User]はテーブル名を必ず指定する。

 

[V(View)用テンプレートファイル:src/Template/Sample/index.ctp] <h1>サンプル画面</h1>
<table>
<tr>
<th>Id</th>
<th>Name</th>
</tr>
<?php foreach ($users as $user): ?>
<tr>
<td><?php echo $user[‘id’]; ?></td>
<td><?php echo $user[‘username’]; ?></td>
</tr>
<?php endforeach; ?>
</table>

 

[C(Contorll)ファイル:src/Controller/Sample4Controller.php]
<?php
namespace App\Controller;
use App\Controller\AppController;
use Cake\ORM\TableRegistry;
class SampleController extends AppController {
public function index() {
$this->users = TableRegistry::get(‘User’);
$users = $this->users->find(‘all’);
$this->set(‘users’,$users);
}
}
?>

Webブラウザで表示してみる


以上でうまく行きました。

Model/Tableのファイル名にデータベースのテーブル名を付けなくてはいけなかったり、テンプレートフォルダ名にコントローラー名を付けなくてはいけなかったり、そのあたりのルールをつかめばページを表示させる流れがつかめそうです。

cakePHPでのファイル名の大文字小文字の扱いについてはもう少し詳しく調べてみる必要がありそうです。

ここ↓あたりにファイル名に関するルールが書いてありました。ちゃんと読まないといけませんね。ファイル名の複数系(s)に関する制限もあるようです。

 

私自身、ひと昔 Php / Apache / PostgrSQL を使ったWebプログラムを組んでいた際、MVC(Modql/View/Control)のVC限定の自作フレームワーク(オレオレフレームワーク)を作成していました。Mに関してはC内でデータベースに接続してSQL文を使ってデータベースとのやり取りを行っていました。
こんな経験もあったのでオープンソースのMVC形式のPHPフレームワークであれば各フレームワークの決まり事を覚えるのと使える機能(オブジェクトとメソッドで提供されてそう)を覚えて使いこなせるようになれば何とかなりそうに感じた。

 

次回は人気上昇中のPHPフレームワーク Laravel を試してみようと思う。