LoginSignup
11
8

More than 5 years have passed since last update.

初めてPHPのフレームワーク(Yii)を使ってみる その1

Last updated at Posted at 2014-09-18

ちょっと大きめのお仕事を受けることになりました
初のECサイトです
EC-CUBEを使おうかとか、昔取った杵柄とやらでガンガン生PHPを叩くかとか色々悩みましたが、予てからオススメを受けていたYiiというフレームワークを使ってみることにしました
なにしろ、私がまともにPHPを使っていた頃は、PHPはオブジェクト指向ですらなかったわけで、フレームワークというものがどういうものか、というところから理解しなければならないわけで...(先の長い話だ)
さて、本題。実際にフレームワークを使って、ちょっとしたECサイトのようなものを作ってみたいと思います


Yiiフレームワークのインストールと設定

インストール

インストール
この辺りを読んでその通りにやれば大丈夫

スケルトンアプリケーションの作成

以下のコマンドを実行して、基本になるスケルトンアプリケーションを作る
ついでに後でGiiを使うので、一時的にアクセス権を777に開放しておく

$ cd htdocs
$ php yii/framework/yiic.php webapp ec_site
$ sudo chmod -R 777 ec_site

・・・めっちゃ簡単

データベースの作成

今回は(も?)レンサバを使うので、悩む余地などなくMySQLを選択
htdocs/ec_site/protected/config/main.phpを以下のように修正
ついでに、少し手順を進めたところで、timezoneがうんたらという警告が出て進まなくなるので、timezoneの設定もしておく

htdocs/ec_site/protected/config/main.php
return array(
...
    'import'=>array(
        'application.models.*',
        'application.components.*',
    ),

    // ↓この一行を追加
    'timeZone' => 'Asia/Tokyo',

    'modules'=>array(
...
    'components'=>array(
...
        // SQLiteをコメントアウト
        /*'db'=>array(
            'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/testdrive.db',
        ),*/
        // uncomment the following to use a MySQL database
        // MySQLをアンコメント
        'db'=>array(
            'connectionString' => 'mysql:host=<DBホスト>;dbname=ec_site',
            'emulatePrepare' => true,
            'username' => '<DB接続ユーザー名>',
            'password' => '<DB接続パスワード>',
            'charset' => 'utf8',
            'tablePrefix' => 'ec_',
            'initSQLs' => array("set time_zone='+9:00';"), // タイムゾーンを追加
        ),
...

phpMyAdminでお手軽にDB操作
ec_siteというデータベースを新たに作成し、以下のsqlファイルを作成してインポート

schema.mysql.sql
CREATE TABLE ec_user
(
    id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
    mailaddr VARCHAR(128) NOT NULL,
    password VARCHAR(128) NOT NULL,
    auth INTEGER DEFAULT 0 NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

CREATE TABLE ec_user_profile
(
    id INTEGER NOT NULL PRIMARY KEY,
    firstname VARCHAR(20) NOT NULL,
    lastname VARCHAR(20) NOT NULL,
    kana_firstname VARCHAR(20) NOT NULL,
    kana_lastname VARCHAR(20) NOT NULL,
    corporation VARCHAR(50),
    kana_corporation VARCHAR(50),
    post VARCHAR(20),
    zipcode VARCHAR(10) NOT NULL,
    address VARCHAR(100) NOT NULL,
    phone1 VARCHAR(20) NOT NULL,
    phone2 VARCHAR(20),
    fax VARCHAR(20),
    email2 VARCHAR(128),
    deliverable_zipcode VARCHAR(10),
    deliverable_address VARCHAR(100),
    point INTEGER DEFAULT 0 NOT NULL,
    CONSTRAINT FK_user_profile FOREIGN KEY (id)
        REFERENCES ec_user (id) ON DELETE CASCADE ON UPDATE RESTRICT
)  ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

テーブル名とか恥ずかしいからあんまりじっくり見ないでくだしあ///

Giiのインストール

htdocs/ec_site/protected/config/main.phpを編集してGiiを使えるようにする

htdocs/ec_site/protected/config/main.php
return array(
...
    // autoloading model and component classes
    'import'=>array(
        'application.models.*',
...
    'modules'=>array(
        // uncomment the following to enable the Gii tool
        // アンコメントしてGiiを有効にする
        'gii'=>array(
            'class'=>'system.gii.GiiModule',
            'password'=>'<ここでGiiのパスワードを設定>',
            // If removed, Gii defaults to localhost only. Edit carefully to taste.
            'ipFilters'=>array('127.0.0.1','::1'),
        ),
    ),
...

下準備としてはこんなもんかな?

11
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
8