new User(); echo "Name: " . $user->getName() . "\n"; echo "Email: " . $user->getEmail() . "\n"; // Fatal error: Cannot redeclare class User // (previously declared in /var/www/html/uuser.php:3) // in /var/www/html/user.php on line 3 ご覧の通り、PHPでは同じクラス名を使うことはできません。
getGreeting(); // Fatal error: Cannot redeclare function getGreeting() // (previously declared in /var/www/html/someone.php:3) // in /var/www/html/anyone.php on line 3
Study { function getGreeting() { return 'こんにちは '; } } namespace Rest { function getGreeting() { return 'おやすみ'; } } echo "Hello"; // Fatal error: No code may exist outside of namespace {} // in /var/www/html/namespaces.php on line 14
new One\One(); require_once 'two.php'; $two = new One\One(); // One class instantiated. // Fatal error: Cannot redeclare class One\One (previously declared // in /var/www/html/one.php:3) in /var/www/html/two.php on line 3 同じ名前空間になるので、同名の関数などは定義できません。しかし、名前は一般的なものであれば重 複する可能性は大いにあります。サブ名前空間を利用することで解消します。
- 完全修飾形式 この3つがあります。 // Fatal error: Uncaught Error: Call to undefined function Name\Someone\getGreeting() // in /var/www/html/name.php:4 Stack trace: #0 {main} thrown // in /var/www/html/name.php on line 4