注意
traitの本質とは違います。オブジェクト指向とかも触れません。
ただ、trait使った時に、実際の動きとしてどんな違いが出るかについてのメモ書きになります。
2つのファイル
hello.php
<?php public function sayHello() { echo 'Hello World!'; }
human.php
<?php require_once 'hello.php' class boy { public function main() { sayHello(); } } class girl { public function main() { sayHello(); } } sayHello();
これだと、human.phpの中は全てhello.phpのsayHello()が読み込めてしまう。
違うんだ。私はboyクラスにだけsayHello()をもたせたかったんだ。
traitを使ってみる
hello.php
trait HelloWorld { public function sayHello() { echo 'Hello World!'; } }
human.php
<?php require_once 'hello.php' class boy { use HelloWorld; public function main() { $this->sayHello(); } } // sayHello(); 読み込めない
これでよし。