【CakePHP3】Rails独学者が初めてCakePHP3を触って得た超基礎知識とRailsとの比較

これまでRailsを独学してましたが、業務でCakePHP3を触ることになったのでドットインストールにお世話になった1日目。
大前提の知識として大事だったこととして、CakePHPでは、Controller内で受け取ったデータをViewに渡す処理を書かなければいけないという点が重要。

# Controller/PostsController.php

# ブログの投稿記事一覧を取得する場合
$posts = $this->Posts->find('all')
                ->order(['created' => 'DESC']); # いろんな条件メソッドチェーンで繋げられる
# この$postsはそのままではViewでは使えないので、Viewでも$postsという変数(または任意の名前)で扱えるようにしなくてはいけない
$this->set('posts', $posts) # OR 全く同じ処理でこうも書ける→ $this->set(compact('posts'))
# Template/Posts/index.ctp

<ul>
    <?php foreach ($posts as $post) : ?>
        <!-- CakePHPではhtmlspecialchars()をh()と略して記述できる -->
        <li><?= h($post->title) ?></li>
    <?php endforeach; ?>
</ul>

$this->set()が、Railsでいうところのインスタンス変数に代入する的な感じだと思う。同じ処理をRailsで書くとこう↓

# controllers/posts_controller.rb
 
@posts = Post.all.order('created_at DESC')
# views/posts/index.html.erb
<ul>
    <% @posts.each do |post| %>
        <li><%= post.title %></li>
    <% end %>
</ul>

フォルダ構成もファイルの命名規則も微妙に違うからわりと混乱する><