ECサイト運営開発記

PHPフレームワーク Laravelの使い方を中心とした通販サイトの開発日記

ECサイトをPHPフレームワークで全面リニューアルした。

カレンダーの通販サイト「E-カレンダー.com」をシステムをPHPフレームワークで全面リニューアルした。

以前までは、Javaサーブレットっぽいフレームワークっぽいものを使っていたのですが、それだといろいろと効率が悪いということで、
全ての処理を見直し、新しいフレームワークでシステムをリニューアルしてみた。
フレームワークPHPフレームワークで第3位くらいのシェアのZend Framework
理由は正直、、SymfonyCakePHPがなんとなく馴染めなかったのと自分にとってカスタマイズが容易だったところ。
選択肢としてCodeIgniterもあったけど、SQLレスなO/Rマッパーも使ってみたかったため、Zend Frameworkを使うことにした。

  • [旧システムの簡単な構成]
      • 1画面=1PHPファイルで構築していたため、画面の数だけPHPファイルが増えて、機能追加やら更新の際、いろいろと煩わしかった。
  • [新システムの構成]
    •  
    • index.phpにリクエストを集約(フロントコントローラー)
    • BaseControllerクラスにサイトの基本機能を集約。
      • 初期化処理(接続クライアントがPCか携帯かiPhoneかを判別)
      • セッションの開始、商品一覧の取得、サイドバーの生成など...
    • Viewにレイアウトを導入
        • HTMLコードを極力見やすく
        • iPhone用カテゴリーページのViewファイル(ほぼこれだけ)
{include file="parts/iphone/inc_iphone_pager.tpl"}
<ul class="itemList">
 {foreach name="iLoop" from=$itemList item="value"}
  {include file="parts/iphone/inc_iphone_item.tpl"}
 {/foreach}
</ul>
    • SQLをベタ書きしてたmodelを見直してZend_Db_TableクラスのO/Rマッパー機能を使うことにした。
      • 多対多のリレーションもSQLレスで書けるので楽になった。ただし、O/Rマッパーは初めてだったので、学習に時間がかかった。
<?php
/*
 * 商品テーブル
 * */
class ItemTable extends Zend_Db_Table_Abstract{
  protected $_name=TABLE_ITEM;
  protected $_primary = "id";

  // 中間テーブル
  protected $_dependentTables = array("CategoryRelationTable","OrderItemTable","ItemRelationTable");
}

?>
  • ZendFramework導入前と導入後
      • publicディレクトリがシンプルに
  • URL構造の変更
    • 以前のURLでアクセスしてきた場合はRewriteRouter等で対処
      • 301リダイレクトの方法
<?php
/*
 * 古い商品URL
 * */
function oldItemAction(){
  $id=$this->getParam("id");
  $this->_redirect(NEW_URL."{$id}/",array("code"=>301));
}
?>
  • パフォーマンス
    • Apacheのmod_delateモジュールを有効に
      • 主要ブラウザ、携帯電話ブラウザ、iPhone/iPod TouchPSPで問題無く動作。
        • ただし、一部、携帯電話ブラウザではダメという噂も。
    • 以前、使えなかったeAcceleratorを導入
      • Cannot access protected propertyエラーが出ていたが、現在のバージョンでは出ない。
      • たぶん、効果は出てる
  • デザインの変更
    • [PC版]
      • HTMLでコンテンツ部分を上部に記述。
        • CSSでレイアウト
        • SEO的に有利になればいいな・・・
      • PC版ではヘッダーボタンを大きくした程度。
        • デザイン面での大きな変更点はなし
    • [iPhone/iPod Touch用サイト]
    • 以前、使っていたiuiは廃止
      • iuiは便利だけど、融通が利かないところもあったので..
    • iPhone用サイトにはjqeryとAdobeSpryを使用
      • タブナビゲーションをSpryで。戻るボタンはjquryを使用。
    • 一応、PSPでも閲覧可能。しかし、JavaScriptの仕様上タブと戻るボタンは使えず非表示。
      •   
      • [iPhone用サイトのムービー]
  • [携帯サイト]
    • 絵文字を導入
    • 主要3キャリアで使える(たぶん...)。
    •  


まだ、追記はありそうですが、この辺で...
カレンダーの通販サイト E-カレンダー.com
http://www.e-cale.com/

Zend Framework徹底入門
Zend Framework徹底入門
posted with amazlet at 08.12.05
山田 祥寛
翔泳社
売り上げランキング: 22652

PHPフレームワーク Zend Framework入門
藤野 真吾
ソーテック社
売り上げランキング: 28867