RubyとPHPはどちらも簡単でWebアプリを作りやすい言語というイメージがありますが、初心者から見るとPHPの方が断然簡単でした。
Rubyからスタートする場合と比べて挫折しづらいと思います。
RubyとPHPといっても、それぞれライブラリを含んだ比較となっています。
PHPはRails、PHPはLaravel、smartyです。
Rubyと比べてPHPの方が良かった点
- コードを修正する際にwebサーバーの再起動が不要
- phpにはrubyのpassengerにあたるものがない
- DB接続が簡単
- 複数DBを横断的にアクセスできる
- viewファイルの位置がわかりやすい
- メソッドに括弧があってわかりやすい
- webアプリを作るためにライブラリが必要ない
詳細
-
コードを修正する際にwebサーバーの再起動が不要
- PHP:コードを修正する際にwebサーバーの再起動が不要です。
- Ruby:コードを修正するたびに再起動が必要です。Dockerの場合、Docker自体の再起動またはウェブサーバー(puma,apache)の再起動が必要です。
-
phpにはrubyのpassengerにあたるものがない
- PHP:apacheとPHPのコードだけでWebアプリを作れます
- Ruby:Railsを使った場合、apacheとRubyのコードをつなぐpassengerというものが必要です。アプリケーションサーバー?というのか複雑なものです。このpassengerに関する記述をapacheのconfファイルに記述しないといけません。サブディレクトリ対応させるときにもpassengerに気をつけないといけません。
-
DB接続が簡単
- PHP:laravel,smartyなどライブラリ必要なくできます。厳密には、PHPのPDOというモジュールを使っているのですが、phpの標準的なインストール
sudo apt-get install php
などをすると標準で入っています。 - Ruby:railsなどライブラリを使わないといけない。
- PHP:laravel,smartyなどライブラリ必要なくできます。厳密には、PHPのPDOというモジュールを使っているのですが、phpの標準的なインストール
-
複数DBを横断的にアクセスできる
-
PHP:laravelを使うと、コード内で対象のDBを指定して複数のDBに接続できます。
DB::connection('mysqldb1')->select('select * from users'); DB::connection('mysqldb2')->select('select * from users');
-
Ruby:実は、ruby,railsでもできるみたいですが、色々難しそうです。少なくともappのコード内に書くのではなく、モードごとに設定する?
-
-
viewファイルの位置がわかりやすい
- PHP:コントローラがviewファイルを明示的に呼び出すことを記述します。初心者でも、コントローラにリクエストがいってViewファイルを呼び出す流れがわかりやすいです。
// 取得した値をビュー「book/index」に渡す return view('book/index', compact('books'));
- Ruby:上記のように書く必要がないため、(上記と同じ例であれば)暗黙的に「book/index.html.erb」を呼び出すことになります。
-
メソッドに括弧があってわかりやすい
- PHP:メソッドに括弧が必要です
- Ruby:メソッドに括弧が不要です(括弧を書くこともできますが)。これは括弧がない方が楽なのではないか?と思うかもしれませんが、括弧がないことによってかなり混乱しやすいです。下記のリンクでその問題点について言及しています。
【Ruby】メソッドの引数の個数についての疑問と検証 - Qiita
-
webアプリを作るためにライブラリが必要ない
- PHP:ライブラリ必要なく、apacheの読み出す場所にphpファイルを置いておくとアプリを作成できます。というか、apacheもインストールすることなく以下のコードのようにサーバーを立ててアプリを開発できます。
初心者にとっては、まずアプリが動くまで短い方が挫折しにくいのでかなり良い部分です。
参考: PHP: ビルトインウェブサーバー - Manual
- PHP:ライブラリ必要なく、apacheの読み出す場所にphpファイルを置いておくとアプリを作成できます。というか、apacheもインストールすることなく以下のコードのようにサーバーを立ててアプリを開発できます。
php -S localhost:8000 -t app/
```
* Ruby:railsなどライブラリが必要です。ただ、railsにも`rails server`があるので、apacheは使わずともアプリを起動することはできます。