Laravelは何でできているのか?調べようとした。 [プログラミング]
PHPのフレームワークとして超有名なLaravelですが、Laravel自体はPHPで出来てんのかとちょっと不審に思っていました。そもそもコマンドラインで打つようなツールをPHPで作れるのかとか、ファイルの生成とか正直、言語的に得意としているところなのかなと思ったりしていました。
Ruby on RailsやDjangoで自分の言語自信を生成するくらいは普通のプログラミング言語なので、RubyでRubyスクリプトを作るとか、PythonでPythonスクリプトを作るとかは普通に想像できるのですが、PHPは基本的にHTMLを動的に生成するスクリプトでしたので、PHPがPHPスクリプトを作るのってのがすんなり想像できなかったのもあります。
Laravelが何でできているのかというところだけども、そもそもそれを入れるComposerが何でできているのかを調べたほうが早い気がして、そちらを調べてみました。Laravelは本当に触りしか使っていないので、というか、Laravelを入れる段になって、Composerを入れるところでムムムとなったので、そこで調べてみたのでした。
Composerの実体はcomposer.pharというファイルなのだけれども、それ自体はPHPファイルとかリソースファイルを含んだアーカイブファイルらしい。圧縮もしていないみたいなのでtarみたいなもの?
https://qiita.com/rana_kualu/items/d868604a1f54c2f93a7c
https://laboradian.com/php-composer/
実際、composer.pherのファイルの先頭部分を見てみると#!があって、PHPのスクリプトとはいえ結局phpで実行されているだけでした。まぁLinuxだからそうだよなぁ…。
実行ファイルだから、ほかの言語とかで書かれているのかなと思っていましたが、そこはそれでPHPがPHPを作り出すという基本は守っているみたいです。というかPHPがshebangで実行されているというのはあまり気持ちの良いものではないなと思ってしまうのは私だけでしょうか。
とにかく同様にしてLaravelも動作しているかもしれません。というか、元のパッケージマネージャがPHPなんだから、LaravelもPHPでできているんじゃないでしょうかね。Laravelが生成するスクリプトはPHPですが、ここまで来てわざわざほかの言語でやる必要もないでしょうし。まだ調べてないけどlaravelコマンドもshebang付きのpharファイルなんじゃないかなと思っています。
調べてないのはlaravelが一つのコマンドだけじゃないからです。あと仕事場に環境はあるけど、手元に環境がないからですね。そのうち作るけど、作るの面倒くさい。laravelコマンドは名前からそうですけど、artisanとか、生成するcreate-projectに関しては作れるのはlaravelだけじゃないみたいですし。というか、正直、一つのコマンドにまとめて欲しい気はします。
Ruby on RailsやDjangoで自分の言語自信を生成するくらいは普通のプログラミング言語なので、RubyでRubyスクリプトを作るとか、PythonでPythonスクリプトを作るとかは普通に想像できるのですが、PHPは基本的にHTMLを動的に生成するスクリプトでしたので、PHPがPHPスクリプトを作るのってのがすんなり想像できなかったのもあります。
Laravelが何でできているのかというところだけども、そもそもそれを入れるComposerが何でできているのかを調べたほうが早い気がして、そちらを調べてみました。Laravelは本当に触りしか使っていないので、というか、Laravelを入れる段になって、Composerを入れるところでムムムとなったので、そこで調べてみたのでした。
Composerの実体はcomposer.pharというファイルなのだけれども、それ自体はPHPファイルとかリソースファイルを含んだアーカイブファイルらしい。圧縮もしていないみたいなのでtarみたいなもの?
https://qiita.com/rana_kualu/items/d868604a1f54c2f93a7c
https://laboradian.com/php-composer/
実際、composer.pherのファイルの先頭部分を見てみると#!があって、PHPのスクリプトとはいえ結局phpで実行されているだけでした。まぁLinuxだからそうだよなぁ…。
$ head /usr/local/bin/composer #!/usr/bin/env php <?php /* * This file is part of Composer. * * (c) Nils Adermann* Jordi Boggiano * * For the full copyright and license information, please view * the license that is located at the bottom of this file.
実行ファイルだから、ほかの言語とかで書かれているのかなと思っていましたが、そこはそれでPHPがPHPを作り出すという基本は守っているみたいです。というかPHPがshebangで実行されているというのはあまり気持ちの良いものではないなと思ってしまうのは私だけでしょうか。
とにかく同様にしてLaravelも動作しているかもしれません。というか、元のパッケージマネージャがPHPなんだから、LaravelもPHPでできているんじゃないでしょうかね。Laravelが生成するスクリプトはPHPですが、ここまで来てわざわざほかの言語でやる必要もないでしょうし。まだ調べてないけどlaravelコマンドもshebang付きのpharファイルなんじゃないかなと思っています。
調べてないのはlaravelが一つのコマンドだけじゃないからです。あと仕事場に環境はあるけど、手元に環境がないからですね。そのうち作るけど、作るの面倒くさい。laravelコマンドは名前からそうですけど、artisanとか、生成するcreate-projectに関しては作れるのはlaravelだけじゃないみたいですし。というか、正直、一つのコマンドにまとめて欲しい気はします。
タグ:PHP
コメント 0