WEBアプリ学習のためにフレームワークを自作してみましょう!
LaravelやRailsを使って学習するデメリットとして、それらが何故動くのかが見えづらい点が挙げられます。
(例、Controlellerクラスを継承したクラスを定義していますが、それらは一体いつインスタンス化されているのでしょうか・・?)
このフレームワークは、PHPの基礎的な文法さえわかれば全ての処理を追えるよう記述されています
従来の教材ではブラックボックス化されがちだった部分を根本から学びましょう!
ローカルでアプリを動かすまでを説明します
ターミナルを立ち上げて、パソコンの適当なディレクトリに、以下のコマンドでソースコードをダウンロードしましょう
git clone https://github.com/hash52/mvc_template.git
ダウンロードしたら、
cd mvc_template
pwd
を実行し、 出力されたパスをどこかにメモしておいてください
例、/Users/Tanaka/workspace/mvc_template/
MAMPはここからインストールできます
インストールしたMAMP(象のアイコンのアプリ)を開いてください
右上のランプが点灯しているかどうかに注目です
http://localhost/phpmyadmin/ にアクセスして、下記の画面が出てくればMAMPの立ち上げは成功です
先程のhttp://localhost/phpmyadmin/ にアクセス、画面上部の「SQL」タブを選択し、下記のクエリを実行します
DROP DATABASE IF EXISTS `mvc_template`;
CREATE DATABASE `mvc_template`;
(こんな感じ)
画面左にmvc_templateという名前のDBが作成されれば成功です。
次に、作成されたmvc_templateを選択し、下記のクエリを全てコピペして実行します
DROP TABLE IF EXISTS `hoge`;
CREATE TABLE `hoge` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`text` varchar(10) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `hoge` (`id`, `text`)
VALUES
(1,'これはmvc_templateというデータベースのhogeテーブルにあるデータです'),
(2,'hogehoge'),
(3,'hogehoge'),
(4,'hogehoge'),
(5,'hogehoge'),
(6,'hogehoge'),
(7,'hogehoge'),
(8,'hogeeeeeee');
左のmvc_template直下に作成されたhogeテーブルを選択し、画面上部の「表示」タブで下記のようになればテーブルの作成は成功です
mvc_template内の、 public/index.php を開きましょう
まずは、 index.php13行目 、$mvc_template_path
の中身を編集します。$mvc_template_path
の値は、1でメモしたパスです
行末に'/'が必要なので忘れないようにしてください
(例)
$mvc_template_path = '/your_path/mvc_template/';
↓
$mvc_template_path = '/Users/Tanaka/workspace/mvc_template/';
次に32行目、$connInfo
の情報を確認します
MAMPの「Preferences」から、「Ports」タブを開き「MySQL Port」にある値を、 index.php35行目 のport番号として記述しましょう
( index.php 修正後の例。【】に注目)
$mvc_template_path = '/Users/tanakatarou/workspace/mvc_template/'; // <= 【自分のパソコンにあるmvc_templateの場所。行末の/を忘れずに!】
$mvc_library_path = $mvc_template_path.'library/mvc/';
$public_path = $mvc_template_path.'/public/';
$app_name = 'sample';
//必要な外部phpファイルの読み込みは全てここで行っている。
require_once $mvc_library_path.'Dispatcher.php';
require_once $mvc_library_path.'RequestVariables.php';
require_once $mvc_library_path.'Post.php';
require_once $mvc_library_path.'QueryString.php';
require_once $mvc_library_path.'Request.php';
require_once $mvc_library_path.'ControllerBase.php';
require_once $mvc_library_path.'ModelBase.php';
require_once $mvc_library_path.'UrlParameter.php';
require_once $mvc_library_path.'Smarty/Smarty.class.php';
require_once $public_path.$app_name.'/models/Hoge.php';
// DB接続情報設定
$connInfo = array(
'host' => 'localhost',
'dbname' => 'mvc_template',
'port' => '8889', // <= 【MAMPで確認したMySQLのポート番号】
'charset'