進行中 自作簡単なフレームワーク(Model、インジェクション、トランザクション)


前回書いた上の記事から自作のフレームワーク作りをちょこちょこ進めています(意味があると聞かれたら微妙ですが......)
こちらの記事を読んだことある人はいると思いますが
私も基本からやろうということでやっています
今すぐ辞めてほしいRuby on Rails、CakePHPを勉強しています


参考にしているのがこちらブログで

PHP10行で作る超シンプルフレームワーク


index.phpをコントローラーにして.htaccessファイルを使いアクセスをindex.phpに集める処理+アドレスの後の / 区切りをパース(受け取って処理する)のが正直わかってない状態です
こうゆうの localhost:8000/posts/3
Laravel、Railsなど多くのフレームワークは普通な書き方で読み取ってくれますが
いわゆるGET方式の送信を受け取るというPHPの初歩的な部分がうまく理解できてないようです

ちょっと話が変わりますが こちらの記事で紹介した 独習PHPを読み込みながらやっています
とても良い本だと思うので初心者向けの入門本をした後にPHPする人は買うべきだと思い是非本屋で立ち読みしてみてください

自作フレームワークをしていてもう一つ力を入れているというか
目標としてやっていることがあります
一番上のリンク先にありますが
コントローラー、モデルの自作と読み込みです

簡単にいうとモデルでDB接続をします(SQLインジェクションとかセキュリティも考えながら)
RubyとPHPを平行でやっていて
PHPはPDOを使い独自のクラスを作成して
<?php
class TopicData {

protected $connection = null;

public function connect()
{
$this->connection = new PDO("mysql:host=localhost;dbname=suggestotron", "root", null);
}

public function getAllTopics()
{
$query = $this->connection->prepare("SELECT * FROM topics");
$query->execute();

return $query;
}
}
?>

Rubyの方はgem ' mysql2 'を使ってDBをクラス+defで使えるように考えています
class Db
def getAllTopics
client = Mysql2::Client.new(:host => host, :username => username, :database => database, :password => password)
getAll = client.query('SELECT * from posts;')
getAll.each do |row|
puts 'Data row = (%s, %s, %s)' % [row['id'], row['name'], row['title']]
end
end
end
イメージとしてはこんな感じ
RubyはSinatraを使うことでWebページに出力したりかなりRailsに近くなります

これ自体はフレームワークがやっているのを自作しているので理解を深めるのは良いと思いますが少し、いや、結構?遠回りかもしれませんが楽しんでやっています
トランザクション処理も加えていくつもりです
改めてこれらをフレームワークがしてくれていることに感動しある程度満足したらフレームワークをさらに深めていきたいですね

コメント

人気の投稿