получение ошибки при попытке использовать созданное мной пространство имен

скрипт с именем tester.php

<?php namespace my; class Tester { public function greet() { echo "Hello ! <br />"; } } 

новый скрипт с именем tester1.php :

 <?php use my; $obj = new Tester(); $obj->greet(); 

Когда я запускаю tester1.php я получаю эту ошибку:

 Warning: The use statement with non-compound name 'my' has no effect in /opt/lampp/htdocs/tester_1.php on line 2 Fatal error: Class 'Tester' not found in /opt/lampp/htdocs/tester_1.php on line 4 

Почему я получаю эту ошибку? Оба этих сценария находятся в одном каталоге /opt/lampp/htdocs/ .

Оператор use предназначен для наложения имени класса / интерфейса / пространства имен, а не на импорт пространства имен, чтобы его можно было использовать. Чтобы использовать ваше пространство имен, вам просто нужно поместить namespace my; в верхней части файла tester1.php (а также включить исходный файл, чтобы было доступно определение класса).

 <?php namespace my; include("tester.php"); $obj = new Tester(); $obj->greet(); в <?php namespace my; include("tester.php"); $obj = new Tester(); $obj->greet(); 

Если вы хотите использовать псевдоним другого имени, вы можете use , например,

 <?php namespace my; use my\Tester as Blah; include("tester1.php"); $obj = new Blah(); $obj->greet(); в <?php namespace my; use my\Tester as Blah; include("tester1.php"); $obj = new Blah(); $obj->greet(); 

Пытаться

<?php use my as Something;

это сработает.

Полный код.

First.php

 <?php namespace my; use my as Blah; include("second.php"); $obj = new Tester(); $obj->greet(); в <?php namespace my; use my as Blah; include("second.php"); $obj = new Tester(); $obj->greet(); 

second.php

 <?php namespace my; class Tester { public function greet() { echo "Hello ! <br />"; } } 

Вам нужно объявить namespace при формулировке перед любым кодом, включая doctype