cakePHP2からCakePHP4への移行手順

ControllerおよびViewについては、元ソースをそのままコピーしてCakePHP4用に書き換える方法で移植しています。

モデルなどはbakeコマンドで自動生成したファイルを元に、必要なメソッドを元ソースからコピーし、CakePHP4用に書き換えて移植しています。

・Configフォルダ配下のファイル構成が変わっているので、CakePHP4用に移植しています。
・URLのルールが変わっている所があるため、Routes.phpに個別に記載が必要なものは記載しています。
・SP用のViewファイルを配置するフォルダ構成をCakePHP4のものに合わせています。
・formやPaginator等の記載ルールが変わったものは個別に対応しています。

0

Laravel 6.0 でAWS S3サービスでの画像格納コーディング手順

前提

  • Laravel version 6.0 のプロジェクトは作成済み
  • AWSアカウントは作成済み

S3用のIAMを作成

まずはAWSのコンソールの右上から、自分のアカウントをクリックしアコーディオンを開き、「My Security Credentisals」をクリック

スクリーンショット 2018-09-02 11.16.16.png

遷移したら、左側のメニューから「Users」をクリック

スクリーンショット 2018-09-02 11.17.21.png

遷移したら、「Add User」をクリック

スクリーンショット 2018-09-02 11.17.35.png

遷移したら、「User name」に適当な名前を入力し、「Select AWS access type」は「Programmatic access」を選択し、「Next: Permissions」をクリック

スクリーンショット 2018-09-02 11.28.46.png

遷移したら、「Attach existing policies directly」をクリック

スクリーンショット 2018-09-02 11.29.40.png

検索画面が表示されるので、S3を検索し、「AmazonS3FullAccess」にチェックを入れ、「Next: Review」をクリック

スクリーンショット 2018-09-02 11.30.39.png

確認画面が表示されるので、「Create User」をクリック

スクリーンショット 2018-09-02 11.30.56.png

最後に、Access key IDとSecret access keyが表示されるので、必ずメモすること!

メモしたら「Close」をクリックして、S3のアカウント作成は完了です

スクリーンショット 2018-09-02 11.31.26.png

Bucketの作成

アカウントを作成したら、次はS3でBucketを作成します

S3の画面から、「Create bucket」をクリック

スクリーンショット 2018-09-02 11.59.52.png

モーダルが表示されるので、「Bucket name」に適当な名前を入力し、Regionは「Asia Pacific(Tokyo)」を選択し、「Next」をクリック

スクリーンショット 2018-09-02 12.05.46.png

遷移後、オプションを設定するモーダルが表示されます

設定系は要件によりけりですが、もちろん全てオフでも大丈夫です

簡単に各オプションの説明を書いておきます

「Versioning」は保存するファイルを上書きする際に以前のファイルを保持しておくオプションで、誤って上書きして以前のファイルを削除してしまった時に便利なオプションです

「Server access logging」はbucket内の操作に対してログを取ってくれるオプションです

「Tags」はbucketに任意のタグを割り当てることができ、コスト配分レポートなどで利用できるオプションです

「Object-level logging」はオブジェクト毎の操作に対してログを取ってくれるオプションです(Server access loggingとイマイチ違いはわからなかった)

「Default encryption」はデフォルトでアップロードするファイルを暗号化するオプションです

「CloudWatch request metrics」はほぼリアルタイムなメトリクスオプションです

スクリーンショット 2018-09-02 12.25.35.png

遷移後、bucketに対してAWSアカウントを紐づけする画面になります

デフォルトで自分のアカウントが入っています

特に他のアカウントを紐づけする必要がなければ、「Next」をクリック

スクリーンショット 2018-09-02 12.28.16.png

遷移後、プレビューが表示され問題なければ「Create bucket」をクリックし完了

スクリーンショット 2018-09-02 12.30.17.png

LaravelでのS3パッケージ格納利用

パッケージのインストール

Larave公式が言っている、s3用のパッケージをインストールする

 composer require league/flysystem-aws-s3-v3:"^1.0"

S3の環境情報を登録

.envファイルに下記情報を追記する

AWS_ACCESS_KEY_ID= 上記手順でユーザーを作成した際に表示されたAccess key ID
AWS_SECRET_ACCESS_KEY= 上記手順でユーザーを作成した際に表示されたSecret access key
AWS_DEFAULT_REGION=ap-northeast-1 (東京リージョンで作成したため)
AWS_BUCKET= 上記手順で作成したbucket名

アップロード

HTMLの作成

<form action="/upload" method="post" enctype="multipart/form-data">
  {{ csrf_field() }}
  <input type="file" name="file">
  <button type="submit">保存</button>
</form>

画像格納用Controllerの作成

public function upload(Request $request)
{
    $file = $request->file('file');
    // 第一引数はディレクトリの指定
    // 第二引数はファイル
    // 第三引数はpublickを指定することで、URLによるアクセスが可能となる
    $path = Storage::disk('s3')->putFile('/', $file, 'public');
    // hogeディレクトリにアップロード
    // $path = Storage::disk('s3')->putFile('/hoge', $file, 'public');
    // ファイル名を指定する場合はputFileAsを利用する
    // $path = Storage::disk('s3')->putFileAs('/', $file, 'hoge.jpg', 'public');
    return redirect('/');
}

結果

スクリーンショット 2018-09-02 18.02.44.png

画像表示用Controllerの作成

public function disp()
{
    $path = Storage::disk('s3')->url('hoge.jpg');
    return view('disp', compact('path'));
}

HTMLの作成

<img src="{{$path}}">

最後に参考サイトです

https://qiita.com/ohmoto_2020/items/8cd92e08be5a28d8a053

https://qiita.com/miriwo/items/cc3c384e694170862256

https://code-pocket.info/20200624304/

https://www.ctc-g.co.jp/solutions/cloud/column/article/16.html

0

dockerメモリ不足 と apache2タイムアウトの対応方法

事象

500のエラー画面で原因がよくつかめない事象となりました

Laravelログは下記が発生

[2021-05-03 00:53:15] local.ERROR: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) {"userId":1,"exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalErrorException(code: 1): Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) at /var/www/html/vendor/dompdf/dompdf/src/Css/Style.php:879)
[stacktrace]
#0 {main}
"} 

原因

  • 1つ目の原因は、Laravelログにでておりましたメモリ不足です。
  • 2つ目の原因はapache でのタイムアウトなのでこちらが 500エラーで原因がつかめなくて時間を消費しました

対策

(1) phpinfo.php を作成し、”<?phpphpinfo();?>” をコーディングしました。こちらを表示して調査しました


(2)メモリ不足は、PHP.ini ファイルです。Docker作成済みなので直接vim で追加しました。vimインストールは
apt-get install vim
vim /usr/local/etc/php/php.ini
を行いました。下記変更です


(3)apacheの設定は
vim /etc/apache2/apache2.conf

docker再起動で変更されますのでお確かめください

その他補足

viの使い方は、下記おすすめです

https://blog.codecamp.jp/vim-command

Docker環境なれると、上記はLinux環境設定です

楽ですね。少し前では大変な開発環境ですが、あっさりできるので最近の若い人たちは恵まれてるなーと感じます。

0

PHPのメモリ上限をアップする方法

エラーメッセージ

Fatal error: Allowed memory size of xxxxxx bytes exhausted

が発生することがある場合の対象方法を説明いたします

初期ではPHPのメモリ上限が少なく設定されています。その際に上記メッセージに遭遇することがあります。
 この場合はPHPのメモリ使用量の上限を変更するのですが、そのときに設定するパラメータがmemory_limitです。

現在使用可能なメモリ使用量の確認

現在PHPに割り当てられているメモリ使用量を確認します。

$ php -i | grep memory_limit

memory_limit => 128M => 128M

memory_limitはphp.iniに設定されています。そのため、読み込まれているphp.iniがどこにあるかパスを確認しましょう。

$ php -i | grep php.ini

Configuration File (php.ini) Path => /path/to/php/etc
Loaded Configuration File => /path/to/php/etc/php.ini

メモリ使用量を任意の値に変更

php.iniのmemory_limitを編集して、割り当てたいメモリ量を設定します。
512MBのメモリを割り当てた場合の設定を次に示します。

memory_limit = 512M

メモリ使用量を無制限に変更する

メモリの使用量を無制限にしたい場合は、memory_limitに”-1″を設定します。。

memory_limit = -1
0

CakePHPバージョン確認方法

CakePHP3

CakePHP3系の場合、下記のパスのファイルにバージョン情報が記載されています。

./vendor/cakephp/cakephp/VERSION.txt

CakePHP2

CakePHP2系の場合、下記のパスのファイルにバージョン情報が記載されています。

./lib/Cake/VERSION.txt

CakePHP1

CakePHP1系の場合、下記のパスのファイルにバージョン情報が記載されています。

./cake/VERSION.txt

コマンドでの調査方法(2系の場合)

cakephp\app> Console/cake
Welcome to CakePHP v2.10.13 Console
---------------------------------------------------------------
App : app
--- 省略 ---

コマンドでの調査方法(3系の場合)

/app/bin/cake

まとめ

忘れっぽいので整理してみました

0

データからseederを生成方法

composer require “orangehill/iseed”

config/app.phpprovidersOrangehill\Iseed\IseedServiceProvider::classを追加

php artisan issed テーブル名

PS C:\Users\user\Documents\MEGA\SOHO\MENTA\src\sales> php artisan iseed basics 
Created a seed file from table basics

こんな感じでseeder が作成できます

便利ですよね。

補足ですが、

外部キーがある場合、\DB::table('table名')->delete();でエラーになったので、\DB::statement('SET FOREIGN_KEY_CHECKS=0');で外部キーチェックを一時的に無効にし、\DB::statement('SET FOREIGN_KEY_CHECKS=1');で有効にすることで回避できます

0

Laravel環境構築時のDB Connection エラー対処方法

◆エラー内容

PS C:\Users\user\Documents\MEGA\SOHO\MENTA\src\sales> php artisan migrate        

   Illuminate\Database\QueryException  : could not find driver (SQL: select * from information_schema.tables where table_schema = sale and table_name = migrations and table_type = 'BASE TABLE')

  at C:\Users\user\Documents\MEGA\SOHO\MENTA\src\sales\vendor\laravel\framework\src\Illuminate\Database\Connection.php:669
    665|         // If an exception occurs when attempting to run a query, we'll format the error
    666|         // message to include the bindings with SQL, which will make this exception a
    667|         // lot more helpful to the developer instead of just the database's errors.
    668|         catch (Exception $e) {
  > 669|             throw new QueryException(
    670|                 $query, $this->prepareBindings($bindings), $e
    671|             );
    672|         }
    673| 

  Exception trace:

  1   Doctrine\DBAL\Driver\PDOException::("could not find driver")
      C:\Users\user\Documents\MEGA\SOHO\MENTA\src\sales\vendor\doctrine\dbal\lib\Doctrine\DBAL\Driver\PDOConnection.php:31

  2   PDOException::("could not find driver")
      C:\Users\user\Documents\MEGA\SOHO\MENTA\src\sales\vendor\doctrine\dbal\lib\Doctrine\DBAL\Driver\PDOConnection.php:27

  Please use the argument -v to see more details.
PS C:\Users\user\Documents\MEGA\SOHO\MENTA\src\sales> 

.envのデータベース名もあっているし、データベースも作成されている。どうもPDOが接続できないようです。

◆原因

php格納場所を where コマンドで確認

C:\Users\user\Documents\MEGA\SOHO\MENTA\src\sales>where php
C:\php\php.exe

cd で 該当ディレクトリで移動し php.ini を開く

phpinfoはブラウザ経由で見ましたが、extension=pdo_mysql (PDO)がPHPで指定されていませんでした

◆対策

php.ini を変更します

extension=pdo_mysql

を生かしましょう

これで無事にマイグレーションできました

0

Laravel 6 テーブルからマイグレーションファイル作成方法

すでにCREATE TABLEのSQLコマンドを使ったテーブル定義のメンテナンスを依頼されましたが、怖いためマイグレーションファイルを生成してくれるパッケージがありましたので使ってみました(過去も何度もお世話になってます。毎回忘れてしまうので備忘録です)

検証環境

PHP7.3.2
Laravel 6.2

パッケージ名

migrations-generator

手順

composer require --dev "xethron/migrations-generator"
php artisan migrate:generate --ignore="users,password_resets"

※ --ignore は対象から除くテーブルです
0

高速軽量なPHPフレームワーク「FuelPHP」とは

今回は是非みなさまへ知っていただきたいFuelPHPフレームワークについて初心者でもわかるように説明していきます。

FuelPHPは2010年にDan Horriganが中心でCodeIgniterに関わった人たちによって開発されたオープンソースのフレームワークです。

このフレームワークを使ってプログラムを作れば簡単に作れちゃうんですよ。

それも他のフレームワークを使うよりも高速に動作するのです。

さあ、それでは始めましょう。

はじめに


ここでは、FuelPHPの解説を始める前にPHPフレームワークについて少しおさらいしておきます。

PHPとは

PHPはサーバで動作するサーバーサイドのプログラミング言語であり、

コンパイルが不要なインタープリター言語でもあるのです。

用途としてはWEB上で動く掲示板やチャットをはじめ、さまざまなWebアプリを開発するのに便利なプログラム言語です。

PHPはHTMLに埋め込むことができるため、お手軽に開発できることから利用するプログラマーが増えてきており、Web開発でよく使用されるスクリプト言語までになってきました。

PHP5.3よりオブジェクト指向へと進化しており、大きな規模のシステムにも対応可能な言語へ成長しております。

フレームワークとは

Web開発などのプログラミングでは、フレームワークを使うことが頻繁にあります。

この「フレームワーク」という言葉、よく聞くのですが、簡単に言うと、「システム開発を効率化してくれる機能群」と表現できます。

機能群だけではなく、ソフトウェアの骨組みまでを用意してくれるのです。

少ないコードで意図する機能やデザインが実現できるのです。

FuelPHPは、このフレームワークの1つです。

FuelPHPとは

image_fuelphp
http://fuelphp.com/

FuelPHPは、後発のフレームワークであり、いろいろなPHPフレームワークの長所を生かしています(いいとこ取りなのです)。

PHP5.3以上を対象に開発された高速で軽量なフレームワークなのです。

「規約より設定を重視」の方針で作られており、フレームワークのルールに縛られて開発作業が制限されるということは少なく、高度なWebアプリケーションの開発に向いていると言われています。

特徴

image2_fuelphp

規約より設定

複雑な設定ファイルに悩まされることがないように設計されています。

そのため、フレームワークのルールが複雑で開発作業が停滞することがなく、高度なWebアプリケーションの開発に向いているのです。

PHPは5.3以上のオブジェクト指向を全面採用

『FuelPHP』は“最先端のフレームワーク”というコンセプトを持っています。

PHP5.3以降でオブジェクト指向が取り込まれておりますので、FuelPHPもオブジェクト指向を取り入れ、シンプルさや高速性に繋がっているのです。

オートローダー

使われるときに必要なクラスだけを読み込むことでメモリ容量を抑え高速に動作します。

例えば

/test/model/msudatest.php を呼び出したい場合,下記となります。

Class フォルダー名_フォルダークラス名  ※アンダーバーでつなぎ先頭大文字

$test = new Test_Model_Msudatest

HMVC+ViewModel

ViewModelはViewに関するビジネスロジックをコーディングします。

モデルは外部データとのやり取りなどを行います。

Viewはシンプルに表示だけに専念。このことよりControllerに負荷が集まっていた既存のフレームワークと比べわかりやすいコーディングができるのです。

MVCじゃなくてなんで、「HMVC」って思われませんか?

HMVCは、”Hierarchical Model View Controller”の略です。

Hierarchical の和訳は”階層的”です。

説明しますと「MVC構造を機能毎にモジュール分割(フォルダ分け)して階層化したものをmodulesファルダーヘ配置することにより別のモジュールを呼べるようになった」ってことです。

MVCについておさらいすると、

  • Modelは主にメインの処理を記述したり、データの連携を行います。
  • ViewはHTMLに出力する処理を行います。
  • ControllerはModelからのリクエストを処理してViewに反映する処理を行います。

実際の個々のphpファイルの配置先は下記の「ディレクトリ構成」となります。

ディレクトリ構成

// HMVCを利用したディレクトリ構成
fuelphp
┣ docs                 …公式ドキュメント英語版
┣ fuel
┃  ┣ app               …アプリケーションを配置
┃  ┃ ┣ cache           … キャッシュフォルダ
┃  ┃ ┣ classes         … クラスを配置
┃  ┃ ┃ ┣ controller   … コントローラを配置
┃  ┃ ┃ ┣ model        … モデルを配置
┃  ┃ ┃ ┗ view         … ビューモデルを配置
┃  ┃ ┣ config          … 設定ファイルを配置
┃  ┃ ┣ lang            … 言語ファイルを配置
┃  ┃ ┣ logs            … ログフォルダ
┃  ┃ ┣ migrations      … マイグレーションファイルを配置
┃  ┃ ┣ modules         … モジュールを配置
┃  ┃ ┣ tasks           … タスクを配置
┃  ┃ ┣ tmp             … tmpフォルダ
┃  ┃ ┣ vendor          … サードパーティライブラリを配置
┃  ┃ ┗ views           … ビューを配置
┃  ┣ core              … FuelPHPの本体
┃  ┣ packages          … FuelPHPのパッケージ
┃  ┗ vendor            … サードパーティー
┗ public               … Web公開領域
    ┣ assets           … img,css,jsあり
    ┗ index.php

このapp以下で作業を行います。

controller、model、viewsフォルダが、まさにMVCモデルの、Model、View、Controllerのことです。

ViewModelは、viewフォルダー配下に置きます。

スキャフォールド(scaffold)

CakePHPフレームワークにもscaffoldは採用されております。

スキャフォールド(scaffold)とは、「CRUD(Create, Read, Update, Delete)操作を行うMVCモデルの枠組み(足場)を自動で一括生成する機能」です。

FuelPHPでは、「oil g scaffold」のコマンドを実行することで、モデル、ビュー、コントローラ、マイグレーションの各ファイルが一括で作成されます。

コマンド例)

#scaffoldコマンドで、商品管理できるページを指定します。php oil g scaffold syouhin cd:int name:varchar[50]#DBにテーブル作成を反映するため、マイグレーションを実行します。php oil refine migrate

syouhinは商品マスタテーブル名でcd=商品CD,name商品名です。

この名前でモデル、ビュー、コントローラ、マイグレーションの各ファイルが一括で作成されます。

”php oil refine migrate”

は実際のテーブルを生成する(マイグレーション)コマンドなのです。

簡単ですよね。

見やすい公式ドキュメント

image3_fuelphp3
http://fuelphp.jp/

FulePHPの公式ドキュメントは充実されており判りやすく書かれております。

公式ドキュメントが和訳のままで意味が不可解でしたら使う気になれませんよね。

FuelPHP公式ドキュメントは日本人がしっかりと書かれております。

『FuelPHP』の公式ドキュメントは非常に見やすく設計されています。

インストール方法

Linux/Macの場合

FuelPHPのインストールは次のように、ターミナルのコマンドラインより行います。

コマンド:

# curl get.fuelphp.com/oil ¦ sh# oil create <ディレクトリ名>

Windowsの場合

FuelPHPのサイトのDownloadリンクより最新版(fuelphp-1.8.zip)を

ダウンロードしてアーカイブを解凍します。

image4_fuelphp
https://fuelphp.com/

解凍後のfuelphp-1.8のディレクトリ一式をfuelphp-1.8/publicが

ドキュメントルートになるようにWebサーバに配置します。

まとめ

FuelPHPは、既存のPHPフレームワーク(CakePHP、CodeIgniter、Symfonyなど)の長所を継承し、

尚且つ既存のPHPフレームワークでの悪い点である規約(ルール)の複雑化によるわずらわしさより開発者を開放させたフレームワークなのです。

なお進化したPHP5.3より採用されたオブジェクト指向で設計されておりますのでより人間の思考に近い形でコーディングできるのです。そして高速なのです。

以上のことよりFuelPHPは「従来のフレームワークの問題を解決する高度なフレームワーク」として期待されています。

是非、この機会にPHP+FuelPHPフレームワークに取り組んでみてはいかがでしょうか。

※当記事は某オンラインスクール依頼より作成いたしました。しかし未報酬のままですので契約は成立しておりません。著作権はこちらにあります。

0

PHPのWEBフレームワークの「CakePHP」とは?

「PHP」でWEBアプリを開発する際に必ずと言っていいほど使われるモノがあります。それは「WEBフレームワーク」です。いくつか種類がありますが、その中でも人気があるのは「CakePHP」というWEBフレームワークです。

初心者の方はWEBフレームワークって何?
CakePHPっていったい何?

など、わからないことだらけでしょう。

そこで今回は、PHPで注目されているWEBフレームワーク「CakePHP」についてどこよりもわかりやすくご紹介します。

この記事を読んでいただければ、5分でWEBフレームワークやCakePHPについてざっくりとした概要や特徴がつかめるでしょう。

はじめに

PHPでの開発時にはcakePHPってよく聞きますよね。

cakePHPなんて、おいしそうな名前ですよね。ケイクピーエイチピーって呼びます。実は、cakeは食べる「ケーキ」のことなんです。

bake(ベーク)という焼くなんて名前が付いた機能はPHPプログラムを自動生成します。ユーモアあふれる先輩方がつくられたWebフレームワークなのです。cakePHPってcake(ケーキ)をbake(ベーク)するんだよって説明したら笑われちゃいますよね。

しかしcakePHPはわかりやすいのでこの記事を読めば5分で特徴と概要がわかります。

PHPとは

images

PHPHTMLに埋め込むことができるため、Web開発でよく使用されるスクリプト言語です。PHPはサーバーサイドで実行した結果のHTMLを返却します。

同様な言語ではMicrosoftのClassic ASP(Active Server Page)などがあります。現在はオブジェクト指向を取り入れられており大きな規模のシステムにも対応可能な言語へ成長しております。

WEBフレームワークとは

「フレームワーク」という言葉、よく聞くのですが結局どういうもの?

ごく普通に使われているキーワードですよね。このフレームワークを使えば簡単にプログラムが作成することができます。

平たく言えば、画面遷移やDBアクセスの部品化やログ出力など便利な部品が準備され、決められた手順に沿ってコーディングを行っていけば簡単に開発できるのです。

現代の開発では、他社との競争が激しくなってきておりスピードが求められます。開発効率が重要視されているため、さらに関連付け(アソシエーション)を記述することで,関連したテーブルの情報を自動的に取得できます。

CakePHPを利用するにあたって必要なスキルとは

HTMLを作成するスキルとPHP言語が分かっていれば、難しいことではありません。

必要なスキルを列記すると以下になります。

  • PHP言語
  • HTML/HTML5
  • Javascript
  • css

CakePHPとは

screenshot-2016-11-26-23-47-11

引用元:CakePHP公式サイト https://cakephp.org/jp/

なぜ、CakePHPなのか?

より簡単に開発できるという点でRuby on Railsというフレームワークが先行して流行しました。

しかしこの概念の多くを取り入れ、Rails流の高速開発とPHPの機動性を兼ね備えたフレームワークのcakePHPを作り出したのです。

この「CakePHP」はウェブ開発を単純に簡単にできるように開発されました。また、高速に開発するための仕掛けが随所に盛り込まれています。

特徴

CakePHPは「PHP開発者が誰でも素早く快適に開発を行える事」を目標として産み出されたプロトタイピング型のフレームワークです。

たくさんの豊富な機能を備えておりますので以下に主な特徴をピックアップしてみますね。

統合された柔軟なO/Rマッピング(ActiveRecordパターン)

O/Rマッピング(PHP上のオブジェクトとデータベースを関連付けするための仕掛け)はSQL文を書くことなく非常に短い記述でレコードの抽出や書き換えが行えます。さらに関連付け(アソシエーション)を記述することで,関連したテーブルの情報を自動的に取得できます。

scaffolding機能

簡単なコントローラをひとつ用意するだけで、テーブルの一覧・追加・削除・編集(Create,Read,Update,Delete) の画面などを簡単に実装することができるといった機能を提供されております。デメリットはレイアウトなどのカスタマイズが難しい点があります。

主にカスタマイズが少ないマスタ画面などに用いることで工数削減が図れます。

bakeコマンドによるプログラム自動生成機能

bakeコマンドを実行すると対話的に次々と入力を求められ、それに答えていくことでMVCモデルに沿ってのモデル/ビュー/コントローラのPHPプログラムを自動生成する機能になります。

コマンドのパラメータによってテーブルの一覧・追加・削除・編集画面などのPHPプログラムが自動生成されるのです。

デメリットはテーブル変更時は個別対応が必要です。

日本語に翻訳された優れたドキュメント。

MVC(モデル/ビュー/コントロール)モデル採用

下記「CaskePHPで作る最適なアプリ」で説明します。

フォームバリデーション機能

数値チェックやパスワードの長さが8文字以上あることなどバリデーションルールを定義することができますので、フォームの扱いが非常に楽になります。

その他主な機能

  • MySQL、PostgreSQL、SQLite、Microsoft SQL Serverの主なDB標準サポート。
  • セキュリティ対策機能が充実(XSS対策・CSRF対策・フォーム改竄検知など)。
  • カスタムURLを実現するためのリクエストディスパッチャー。
  • 下位バージョンからのアップグレードをサポートする公式移行ガイド及びUpgrade shellが充実。
  • PEAR等の外部ライブラリに依存しておらず、単体での利用が可能。
    ※PEAR (PHP Extension and Application Repository) はPHPでよく利用する機能がまとめられたPHP標準ライブラリ(パッケージ)です。
  • プラグインによる機能拡張。
  • 柔軟なビュー機構。
  • テンプレートの継承や拡張。
  • Composerへの標準対応(バージョン3以降)。

CakePHPを使って最速で作るサンプルプログラム

前提条件

  • XAMPP(推奨:V3.2.2)がインストール済みであること。
  • PHP (推奨:5.6.28)がインストール済みであること。
  • cakePHPがダウンロードし展開済みであること。

MVCモデルとは

  • M:Model[モデル]

主にデータベースをモデルへ対応させる(外部連携機能)。

  • V:View[ビュー]

画面を表示するテンプレートの機能を実現。

  • C:Controllerは[コントローラー]

簡単に言えばアプリケーションの司令塔のような役割を果たします。リクエストに対して処理(動作)を指示し処理結果をView[ビュー]へ渡す制御を行います。それぞれの機能に影響を及ぼさないよう、独立させて作るという考え方です。

基本的にはコントロールにすべての処理を書いて、そこから表示に関するものをビューへ、データベースに関するものをモデルへと切り離します。

また、CakePHPではディレクトリに合わせてそれぞれのプログラムを配置するだけで機能するようになっています。cakePHPではbakeコマンドで簡単にプログラムを作成できます。

過程を説明いたしますのでイメージだけでもつかんでください。

composerとbakeでプロジェクト作成

composerを使ってプロジェクトを作成してみます。

①.まずプロジェクトのフォルダーを作成してください。

②.その配下に下記の composer.json を作成します。

{   
     "name": "cakephp/cakephp",
     "description": "The CakePHP framework",
   "type": "library",
   "keywords": ["framework"],
   "homepage": "http://cakephp.org",
   "license": "MIT",
   "authors":
     [ 
     {
       "name": "CakePHP Community",
       "homepage":          "https://github.com/cakephp/cakephp/graphs/contributors" 
          }
         ],
   "support":
     {
          "issues": "https://github.com/cakephp/cakephp/issues",
      "forum": "http://stackoverflow.com/tags/cakephp",
           "irc": "irc://irc.freenode.org/cakephp",
           "source": "https://github.com/cakephp/cakephp"
         },
     "require": {
         "php": "&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;=5.2.8",
                 "ext-mcrypt": "*" 
     },
     "require-dev": {
         "phpunit/phpunit": "3.7.*",
         "cakephp/debug_kit" : "2.2.*" 
     },     
     "bin": [ "lib/Cake/Console/cake" ] 
}

③.コマンドプロンプトを開き、cdコマンドでこの作成ディレクトリをカレントとします。

④.”composer install “のコマンドを入力しプロジェクトを作成する。

⑤.”.\Console\cake.bat bake all” を入力し各指示に答えてください。

テーブル名やキーなどをビュー形式など簡単な質問形式で指定していきます。

フォルダー構成

各フォルダー構成は決められております。基本的にはモデル/コントローラ/ビューは各フォルダーへ格納しないといけません。

SyouhinMastersはbakeコマンドで指定したテーブル名です。Controller/Model/Viewの各MVCフォルダー配下へphpと画面テンプレートのctpが自動生成されます。

動作結果

bakeコマンドより指定したテーブル名が起動のURLとなります。

URL → http://localhost/cakePhpBakeSample/SyouhinMasters

これだけで下記の図1のレコード一覧画面と図2のレコード登録画面、他にも削除画面と更新画面も自動的に生成されるのです。

この生成プログラムをベースに開発していけば開発スピードも格段にアップできるのです。

【図1:レコード一覧画面】

cakephp%e4%b8%80%e8%a6%a7

【図2:レコード登録画面】

cakephp%e8%bf%bd%e5%8a%a0

まとめ

cakePHPは世界規模で最も多くのWebアプリケーションに導入されているPHPフレームワークです。O/Rマッピング(ActiveRecordパターン)やscaffolding機能やbakeコマンドより初心者でも敷居が低く、生産性が高いフレームワークなのです。

またPHPのオブジェクト指向化より高いレベルでのユーザ要求にも応える事ができるようになってきました。

どうですか?使ってみたくなったのではないでしょうか。

是非、この機会にPHP+cakePHPフレームワークに取り組んでみてはいかがでしょうか。

※当記事は、某オンラインスクールへ依頼されて作成されたものですが未報酬のままですので契約は成立しておりません。よって著作権は私にありますので掲示させていただいてます。

0