【PHP】外部ファイルの読み込み
こんにちは😊Kintarouです。
現在エンジニア転職を目指してプログラミング学習中です👨🎓
夢はフリーランスエンジニアになって働く人にとって働く事が楽しくなるシステムを作ること!
と、愛する妻と海外移住すること🗽
プログラミングや読んでいる本のことなど、ブログに書いていきます!
twitter : https://twitter.com/ryosuke_angry
今回参考にさせて頂いたサイト様🙇♂️ dotinstall.com
外部ファイルを読み込む
外部のファイルを読み込む方法です。
純粋に外部ファイルを使いたい時や、コードが長くなってファイルを分割したい場合に使えます。
記述 | 処理 |
---|---|
require | 外部ファイルを読み込む。読み込めなかった場合処理が止まる。 |
include | 外部ファイルを読み込む。読み込めなかった場合も処理は止まらない。 |
require_once | requireと同じだが、既に読み込まれていたらスキップする。 |
include_once | includeと同じだが、既に読み込まれていたらスキップする。 |
仮にUserクラスの記述を読み込んで、別ファイルとしてメソッドを使ってみます。
User.phpファイルとmain.phpファイルに分けますが、2つのファイルは同階層上にあるとします。
■User.php (Userクラスの定義のみ記述)
<?php class User { private $name; public function __construct($name) { $this->name = $name; } public function profile() { printf('%s' . PHP_EOL, $this->name); } }
■main.php (実行するコードを記述)
<?php #requireでUser.phpファイルを呼び出しています。 require('User.php'); $users = []; $users[0] = new User('Kintarou'); $users[1] = new User('Kinjirou'); #User.php上のメソッドが問題なく読み込まれています。 foreach($users as $user) { $user->profile(); } #=>Kintarou #=>Kinjirou
外部ファイルを自動で読み込む
クラスをファイル毎に分けたは良いものの、いちいちクラス毎にrequireするのは面倒となった場合にspl_autoload_register(spl => standard php library)という関数が使えます。
先ほどの例のmain.phpのみ変更します。
■main.php
<?php #この記述により、クラスがnewされた時にrequireされていなければ、newされたクラス名を$classに代入してクラス名.phpファイルを読み込む。 spl_autoload_register(function ($class){ require($class . '.php'); }); $users = []; $users[0] = new User('Kintarou'); $users[1] = new User('Kinjirou'); foreach($users as $user) { $user->profile(); } #=>Kintarou #=>Kinjirou
以上、どなたかの参考になれば幸いです😊