Archive for the ‘PHP’ Category

このエントリーをはてなブックマークに追加
[`livedoor` not found]

■Fuelphpにて環境の振り分け例

bootstrap.php の編集を行い、開発環境や本番環境の振り分けを行う。

例)
・ポートが8080の場合 → staging環境
・ホストが”localhost”の場合 → development環境
・上記に該当しない場合 → production環境

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)
このエントリーをはてなブックマークに追加
[`livedoor` not found]

考えてみれば単純なことなのにハマったので備忘録に残します。
ハマった時のケースはModule Aから共通Module(例ではModule B)のデータを表示する際にModule AのViewでModule BのModelをどう呼び出すか、というもの。(そもそも設計云々に問題があるというのは割愛します・・・)

■module Aからmodule BのModelを呼び出す場合。

module Aで

と記述し、Module Bを読み込む。
確認方法は、

とすれば、呼び出されていることが確認できます。

Modelでデータを取得する際は、

というように、namespace(module名)を付ければ呼び出すことができます。

 

・・・何でこんなに悩んだんだろう。。。

 

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)
このエントリーをはてなブックマークに追加
[`livedoor` not found]

FuelPHPのドキュメントにも例がありますが、FuelPHPのValidationでuniqueチェックを作ってみました。
本家の例ではValidationを拡張する例として記載があります。

http://fuelphp.com/docs/classes/validation/validation.html

 

但し、DBへのInsert時は上記の拡張例で問題ないのですが、Update時は、
更新するレコード自身を含めてしまうとuniqueチェックで引っかかってしまうため、除外する必要があります。
その処理を公式ドキュメントの例を参考にコードを追加してみました。

また、コアクラスを拡張しているため、/fuel/app/bootstrap.phpを編集する必要があります。

 

Modelのコード使用例は以下の通りです。

Controllerのコード例は以下の通りです。

■Insert例

■Update例

VN:F [1.9.22_1171]
Rating: 10.0/10 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)
このエントリーをはてなブックマークに追加
[`livedoor` not found]

CodeIgniterからWordprssを呼び出した際に苦労したから、FuelPHPからはどうだろうと思いやってみた。
とりあえずということでまずは投稿された記事が呼び出せるか?(ってか、まだこれしかしてない)
まずは、フォルダの構成。あまり深く考えず、ドキュメントルートにwordpressを置いてみた。

ドキュメントルートの名前はwpplus(適当)

wp_1

 

この状態でwordpressのインストールを実行。

 

次に、 /fuel/app/bootstrap.php の編集を行う。
ポイントは3行目の「 require ‘../wordpress/wp-load.php’; 」の部分。
10行目の「require COREPATH.’classes’.DIRECTORY_SEPARATOR.’autoloader.php’; 」の部分より、
前に呼び出す必要がある。

次に、Controllerの作成。
ポイントは9行目の「 require_once ‘../wordpress/wp-blog-header.php’; 」の部分。
後はWordpressの関数を呼び出すことで記事の一覧を取得出来る。

というわけで、非常に簡単でした。

VN:F [1.9.22_1171]
Rating: 10.0/10 (2 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)
このエントリーをはてなブックマークに追加
[`livedoor` not found]

■modulesについて

・独立して動作させる

・HMVCを利用できる

・独立したルーティングを定義できる

 

■module化の手順

・config.phpの編集

/fuel/app/config/config.php を編集し、有効化する。

・namespaceの設定

Controller や Modelに namespace の設定が必要になる。

■ルーティングの定義方法
/fuel/app/modules/(app名)/config/ にroutes.php を作成し、ルーティングを定義する。
ルーティングは通常の/fuel/app/config/routes.php とまったく同様。

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)
このエントリーをはてなブックマークに追加
[`livedoor` not found]

FuelPHPでindex.phpを含むURI(mod rewriteで省略しない)場合、

paginationのリンク生成が正常に動作しないことを確認しました。

 

■例

http://localhost/app/public/index.php/aaa/bbb/list

■コントローラ: bbb

■メソッド:list

■paginationのconfig

$pagination = Pagination::forge(‘default’, array(
‘pagination_url’ => ‘/app/public/index.php/aaa/bbb/list’,
‘uri_segment’ => 4,
‘total_items’ => $count,
‘per_page’ => $this->per_page,
‘));

この場合、paginationで生成されるURLは、以下のようになりました。

http://localhost/app/public/index.php/aaa/bbb/2
※本来であれば、http://localhost/app/public/index.php/aaa/bbb/list/2となるはず

上記の例をmod rewriteでindex.phpを省略させた場合、正常に動作し、以下のURLが生成されました。

http://localhost/app/public/aaa/bbb/list/2

 

paginationのコードを追ったところ、以下の部分を変更することで正常に処理されるようになりました。

■FuelPHP 1.6の場合

543行目
○修正前
[php]$segs[$this->config[‘uri_segment’] – 1 + $seg_offset] = ‘{page}’; [/php]

○修正後
[php]$segs[$this->config[‘uri_segment’] + $seg_offset] = ‘{page}’; [/php]

 

この事象は恐らくバグだと思われます。
これはあくまで暫定の対処方法です。

 

VN:F [1.9.22_1171]
Rating: 8.5/10 (2 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)
このエントリーをはてなブックマークに追加
[`livedoor` not found]

FuelPHP 1.6をxampp(windows環境)で利用する際、composerをインストールしないと使えなくなりました。

FuelPHPをxamppに設置(解凍)してアクセスすると、以下のエラーが表示されます。

Composer is not installed. Please run “php composer.phar update” in the root to install Composer

丁寧に対処するためのコマンドが表示されますが、このコマンドは旧バージョンがインストールされていて、

それをアップデートするためのコマンドになります。

composerがインストールされていない環境では、”update”ではなく、”install”する必要があります。

インストールするためのコマンドは以下の通りです。

php composer.phar install

 

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)
このエントリーをはてなブックマークに追加
[`livedoor` not found]

CodeIgniterをインストールした直後の設定では、URIパスの指定が無かった場合に呼び出される

コントローラ(デフォルトコントローラ)は、「welcome.php」となっている。

 

デフォルトコントローラを変更するには、「application/config/route.php」の一部を変更する必要がある。

○初期値
[php]$route[‘default_controller’] = “welcome”;[/php]

○変更例
[php]$route[‘default_controller’] = “index”;[/php]

上記の変更にて、「index.php」が呼び出されるようになる。

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)
このエントリーをはてなブックマークに追加
[`livedoor` not found]

PHPの軽量フレームワーク CodeIgniterの備忘録

■フロントコントローラの設定

ドキュメントルートに設置したindex.phpで以下の2箇所を編集する。
セキュリティ上は、index.phpとは別の場所(公開ディレクトリではない場所)の方が良い。

○「system」ディレクトリのパスを設定
$system_path = ‘system’;

○「application」ディレクトリのパスを設定
$application_folder = ‘application’;

 

■環境の切り替え

index.phpの中で環境を定義することで変更・切り替えが可能

○開発環境
define(‘ENVIRONMENT’, ‘development’);
→ error_reporting(E_ALL);に設定される。

○テスト環境
define(‘ENVIRONMENT’, ‘testing’);
→ error_reporting(0) ; に設定される。

○本番環境
define(‘ENVIRONMENT’, ‘production’);
→ error_reporting(0) ; に設定される。

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)
このエントリーをはてなブックマークに追加
[`livedoor` not found]

PEARのMDB2パッケージ使用例です。プレースホルダを用いています。
ちなみにDBパッケージはメンテナンスが終了しているため、使用が推奨されていません。

[php]

error_reporting(E_ALL);
if (error_reporting() > 6143) {

error_reporting(E_ALL & ~E_DEPRECATED);
}

require_once ‘MDB2.php’;

$dsn = array(
‘phptype’ => ‘mysqli’,
‘username’ => ‘db_user’,
‘password’ => ‘db_password’,
‘hostspec’ => ‘localhost’,
‘database’ => ‘testDB’,
);

$mdb2 =& MDB2::connect($dsn);

if (PEAR::isError($mdb2)) {

die($mdb2->getMessage());

}

///検索する名前を仮設定
$name = ‘aaa’;

$sql = “SELECT * FROM sampleTable WHERE name = ? ORDER BY id”;

$stmt = $mdb2->prepare($sql, array(‘text’));
$res = $stmt->execute(array($name));
[/php]

VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)