PHP/CakePHP
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
-世界的にはシェアが大きいPHPフレームワーク。特に記載がな...
#contents
*インストール [#t69d6482]
DocumentRoot以下に解凍して、書き込み権限を与えるのみ。xam...
chown -R apache:apache cake/
**mod_rewriteの設定 [#kc62b62d]
そのままだとCSSが効かず、
インストールディレクトリの.htaccessにrewriteの設定がされ...
この設定を利用できたほうが何かと便利なのでインストールデ...
<Directory "/var/www/html/CAKE_INSTALL_DIR">
AllowOverride FileInfo
</Directory>
*インストール後の設定 [#n5b2fbd5]
**アプリ全体設定 [#ge76ef1c]
app/config/core.php
-Security.Saltの文字列変更
-date_default_timezone_set('UTC')をTokyo/Asiaへ; (PHP 5.3...
**DB接続設定 [#w3544bb6]
app/config/database.php.defaultのファイル名変更→database...
-文字化けを防ぐために以下の設定を追加しておくことを進める。
'encoding' => 'utf8'
**文字コードの設定 [#s1e81c4d]
全部共通の文字コードはapp/config/core.php
Configure::write('App.encoding', 'euc-jp');
個別には$html->charset('utf-8')で設定できそうだけど、どこ...
**複数データベースの設定 [#q6c0e494]
modelにデータベースを指定する。何も書かないと当然デフォル...
**DBのエンコーディングと出力エンコーディングが違うときど...
*命名規約 [#a5902397]
-DBのテーブルとModelの関係
|テーブル名|コントローラーファイル名|モデル名|
|cards|cards_controller.php|Card|
|credit_cards|credit_cards_controller.php|CreditCard|
**命名規約上の注意 [#ea18a33c]
英単語で分割可能なテーブル名は勝手に分解解釈される。
Highwaysテーブルだとhigh_waysとしてテーブルを作成しないと...
外部結合用のキーフィールド名もテーブルに合わせる必要があ...
*認証 [#r2564106]
AuthComponentがある
http://blog.ne2ma2.com/archives/160
*TIPS [#j55b2b95]
**ログの出力 [#a5ed255c]
$this->log("ログ");
app/tmp/log/以下に出力
**外部ファイルの読み込み [#jaf7a2f7]
-App::importを使う。
app/libにおいておくと以下のようにインポートできる。
-Cakephpのinclude_pathは以下のコマンドで取得できる。しかし
echo get_include_path();
初期状態ではcakeのROOTとappのディレクトリとPHPのinclude_p...
-
**View関連 [#o3afca81]
|ページのタイトル|$pageTitle変数を設定|
|POSTの取得|$params['form']|
|GETの取得|$params['url']['hoge']|
|セッションkeyの存在チェック|$this->Session->check('key')|
**Model関連 [#dca31b46]
***キャッシュについて [#y9fa341a]
毎回DB構造を解析しているのは無駄なので、debugモードの時は...
***Insert方法 [#k9a2330e]
新規作成時はフィールド名を持つ連想配列を用意して、saveメ...
$data = array("name" => "test");
$this->Model->create();
$this->Model->save($data);
-検索結果の取得が一件だけならfind('first')、連想配列がシ...
-直前にインサートしたID取得にはgetLastInsertID
-外部キーとして結合する場合に表示するフィールドを$display...
var $displayField = 'device_name';
***リレーションをたどらない。 [#qf6f730b]
リレーションが不要な場合はパフォーマンスのため以下のコー...
$this->Model->recursive = 0;
*その他 [#l2fcf7e7]
**ファイルの場所情報 [#k686a6e0]
-ログファイル
CAKE_HOME/app/tmp/logs
*使わないシリーズ [#ia3af68a]
**Viewを使わない [#e72ffd2d]
各functionの中で以下のように記述
$this->autoRender = false;
**Layoutを使わない [#fe65832d]
contorollerの中で以下のように記述
$this->layout = '';
**Modelを使わない [#v61341a4]
$uses = null
**ModelでTableを使わない。 [#j3e9480a]
var $useTable = false;
*トラブルシューティング [#k69a7a62]
**PHPの対応バージョンの問題 [#a5b0ff10]
-5.1.6 CentOS5.3 動作実績有り
-4.3.9 CentOS4.8 動作実績有りだが、セッションがつながら...
**DB接続を有効にしたら真っ白 [#p050686f]
-PHPのDB接続モジュールが入っていないとまったくの手がかり...
*CakePHP Modelに沿ったDB定義 [#n824d5ab]
-Modelが単数形でテーブル名は複数形となる。なので英語がよ...
-IDはつけた方が良い。IDに意味を持たせないサロゲートキー的...
-
**MySQL [#xfe038fe]
CREATE TABLE users(
id int unsigned auto_increment primary key,
nickname varchar(30) NOT NULL,
created datetime default NULL,
modified datetime default NULL
);
CREATE TABLE profiles(
id int unsigned auto_increment primary key,
user_id int unsigned unique,
blog_url varchar(256),
hobby varchar(256),
created datetime default NULL,
modified datetime default NULL
);
**PostgreSQLでTable定義 [#tf880807]
チュートリアルはMySQLしか乗っておらず、日本ではPostgresが...
CREATE SEQUENCE car_id_seq;
drop table cars;
CREATE TABLE cars (
id INTEGER DEFAULT nextval('cars_id_seq') PRIMARY KEY,
car_id VARCHAR(50),
comment TEXT,
created TIMESTAMP DEFAULT NULL,
modified TIMESTAMP DEFAULT NULL
);
*Link [#g5a580d9]
http://www.syuhari.jp/blog/archives/6
*インストール後のトラブルシューティング [#ae0225a6]
**1.3系 [#f0b8477c]
***strtotime()でエラー [#u5cf932f]
-PHP5.3でcore.phpが解凍そのままだとエラーが出てしまうこと...
Warning (2): strtotime() [http://php.net/function.strtoti...
-config/core.phpのtimezoneを修正
/**
* If you are on PHP 5.3 uncomment this line and correct...
* to fix the date & time related errors.
*/
date_default_timezone_set('Asia/Tokyo');
*2.4系 [#e4eb2460]
1.3とほぼ同じ
+timezoneの設定
+security.saltの変更
+tmpの権限変更
+Allow Overrideの設定
+database.phpの作成
**2.4系への移行メモ [#wb110dff]
ブラウザキャッシュが強すぎて、一回エラー画面を出してしま...
+ファイル命名ルールの変更
+Htmlヘルパーの変更
+Modelのアソシエーションが効かない(おそらくファイル命名が...
+バッチの置き場ががらりと変わっていた。コードはそのまま動...
**3.0系移行 [#c6f80c3c]
今回もがっつり変わっているので移行が大変。
***設定系 [#p9e3564e]
***データベースアクセス [#w3f4739d]
終了行:
-世界的にはシェアが大きいPHPフレームワーク。特に記載がな...
#contents
*インストール [#t69d6482]
DocumentRoot以下に解凍して、書き込み権限を与えるのみ。xam...
chown -R apache:apache cake/
**mod_rewriteの設定 [#kc62b62d]
そのままだとCSSが効かず、
インストールディレクトリの.htaccessにrewriteの設定がされ...
この設定を利用できたほうが何かと便利なのでインストールデ...
<Directory "/var/www/html/CAKE_INSTALL_DIR">
AllowOverride FileInfo
</Directory>
*インストール後の設定 [#n5b2fbd5]
**アプリ全体設定 [#ge76ef1c]
app/config/core.php
-Security.Saltの文字列変更
-date_default_timezone_set('UTC')をTokyo/Asiaへ; (PHP 5.3...
**DB接続設定 [#w3544bb6]
app/config/database.php.defaultのファイル名変更→database...
-文字化けを防ぐために以下の設定を追加しておくことを進める。
'encoding' => 'utf8'
**文字コードの設定 [#s1e81c4d]
全部共通の文字コードはapp/config/core.php
Configure::write('App.encoding', 'euc-jp');
個別には$html->charset('utf-8')で設定できそうだけど、どこ...
**複数データベースの設定 [#q6c0e494]
modelにデータベースを指定する。何も書かないと当然デフォル...
**DBのエンコーディングと出力エンコーディングが違うときど...
*命名規約 [#a5902397]
-DBのテーブルとModelの関係
|テーブル名|コントローラーファイル名|モデル名|
|cards|cards_controller.php|Card|
|credit_cards|credit_cards_controller.php|CreditCard|
**命名規約上の注意 [#ea18a33c]
英単語で分割可能なテーブル名は勝手に分解解釈される。
Highwaysテーブルだとhigh_waysとしてテーブルを作成しないと...
外部結合用のキーフィールド名もテーブルに合わせる必要があ...
*認証 [#r2564106]
AuthComponentがある
http://blog.ne2ma2.com/archives/160
*TIPS [#j55b2b95]
**ログの出力 [#a5ed255c]
$this->log("ログ");
app/tmp/log/以下に出力
**外部ファイルの読み込み [#jaf7a2f7]
-App::importを使う。
app/libにおいておくと以下のようにインポートできる。
-Cakephpのinclude_pathは以下のコマンドで取得できる。しかし
echo get_include_path();
初期状態ではcakeのROOTとappのディレクトリとPHPのinclude_p...
-
**View関連 [#o3afca81]
|ページのタイトル|$pageTitle変数を設定|
|POSTの取得|$params['form']|
|GETの取得|$params['url']['hoge']|
|セッションkeyの存在チェック|$this->Session->check('key')|
**Model関連 [#dca31b46]
***キャッシュについて [#y9fa341a]
毎回DB構造を解析しているのは無駄なので、debugモードの時は...
***Insert方法 [#k9a2330e]
新規作成時はフィールド名を持つ連想配列を用意して、saveメ...
$data = array("name" => "test");
$this->Model->create();
$this->Model->save($data);
-検索結果の取得が一件だけならfind('first')、連想配列がシ...
-直前にインサートしたID取得にはgetLastInsertID
-外部キーとして結合する場合に表示するフィールドを$display...
var $displayField = 'device_name';
***リレーションをたどらない。 [#qf6f730b]
リレーションが不要な場合はパフォーマンスのため以下のコー...
$this->Model->recursive = 0;
*その他 [#l2fcf7e7]
**ファイルの場所情報 [#k686a6e0]
-ログファイル
CAKE_HOME/app/tmp/logs
*使わないシリーズ [#ia3af68a]
**Viewを使わない [#e72ffd2d]
各functionの中で以下のように記述
$this->autoRender = false;
**Layoutを使わない [#fe65832d]
contorollerの中で以下のように記述
$this->layout = '';
**Modelを使わない [#v61341a4]
$uses = null
**ModelでTableを使わない。 [#j3e9480a]
var $useTable = false;
*トラブルシューティング [#k69a7a62]
**PHPの対応バージョンの問題 [#a5b0ff10]
-5.1.6 CentOS5.3 動作実績有り
-4.3.9 CentOS4.8 動作実績有りだが、セッションがつながら...
**DB接続を有効にしたら真っ白 [#p050686f]
-PHPのDB接続モジュールが入っていないとまったくの手がかり...
*CakePHP Modelに沿ったDB定義 [#n824d5ab]
-Modelが単数形でテーブル名は複数形となる。なので英語がよ...
-IDはつけた方が良い。IDに意味を持たせないサロゲートキー的...
-
**MySQL [#xfe038fe]
CREATE TABLE users(
id int unsigned auto_increment primary key,
nickname varchar(30) NOT NULL,
created datetime default NULL,
modified datetime default NULL
);
CREATE TABLE profiles(
id int unsigned auto_increment primary key,
user_id int unsigned unique,
blog_url varchar(256),
hobby varchar(256),
created datetime default NULL,
modified datetime default NULL
);
**PostgreSQLでTable定義 [#tf880807]
チュートリアルはMySQLしか乗っておらず、日本ではPostgresが...
CREATE SEQUENCE car_id_seq;
drop table cars;
CREATE TABLE cars (
id INTEGER DEFAULT nextval('cars_id_seq') PRIMARY KEY,
car_id VARCHAR(50),
comment TEXT,
created TIMESTAMP DEFAULT NULL,
modified TIMESTAMP DEFAULT NULL
);
*Link [#g5a580d9]
http://www.syuhari.jp/blog/archives/6
*インストール後のトラブルシューティング [#ae0225a6]
**1.3系 [#f0b8477c]
***strtotime()でエラー [#u5cf932f]
-PHP5.3でcore.phpが解凍そのままだとエラーが出てしまうこと...
Warning (2): strtotime() [http://php.net/function.strtoti...
-config/core.phpのtimezoneを修正
/**
* If you are on PHP 5.3 uncomment this line and correct...
* to fix the date & time related errors.
*/
date_default_timezone_set('Asia/Tokyo');
*2.4系 [#e4eb2460]
1.3とほぼ同じ
+timezoneの設定
+security.saltの変更
+tmpの権限変更
+Allow Overrideの設定
+database.phpの作成
**2.4系への移行メモ [#wb110dff]
ブラウザキャッシュが強すぎて、一回エラー画面を出してしま...
+ファイル命名ルールの変更
+Htmlヘルパーの変更
+Modelのアソシエーションが効かない(おそらくファイル命名が...
+バッチの置き場ががらりと変わっていた。コードはそのまま動...
**3.0系移行 [#c6f80c3c]
今回もがっつり変わっているので移行が大変。
***設定系 [#p9e3564e]
***データベースアクセス [#w3f4739d]
ページ名: