2015-09-16 7 views
1

пытается что-то сделать. У меня есть корневая папка с индексом index.php. Внутри этой папки находится другая папка, называемая классами. Внутри классов у меня есть три класса, которые имеют классы пространства имен, например.PHP-выпуск с пространствами имен в index.php

<?php 

namespace classes; 

class MyClass { 

... 

Теперь вернемся к index.php, это не класс. Однако мне нужно использовать эти классы в папке классов. Я стараюсь без успеха

<?php 

$reader = new \classes\MyClass(); 

С этим я получаю сообщение об ошибке, что класс не найден. Я также попытался использовать требование, но поскольку MyClass требует использования другого класса в папке, это означает, что мне нужно, чтобы оба класса работали. Поэтому единственным решением на данный момент является

<?php 

require_once('classes/MyClass.php'); 
require_once('classes/MySecondClass.php'); 

$reader = new \classes\MyClass(); 

По какой-то причине я не думаю, что это правильный способ сделать это. Каков подходящий способ использования моих классов в index.php?

Благодаря

+1

Посмотрите на использование [автозагрузчика] (http://php.net/manual/en/language.oop5.autoload.php). В идеале, хотя «MySecondClass.php» сам должен быть «require_once» в «MyClass.php», поскольку он получен из него и, следовательно, нуждается в его определении. – slugonamission

ответ

1

Когда вы пытаетесь работать с пространствами имен вы могли бы использовать соглашение PSR-4, и вы можете использовать композитора автозагрузчика. Это очень просто, и у вас хорошая структура.

http://jessesnet.com/development-notes/2014/php-composer-autoloading/

Вот хорошая статья, которая описывает, как использовать PSR-4 автозагрузчика. Это новый способ работы с файлами и зависимостями. И у вас есть возможность работать со всеми другими пакетами, которые используют композитор.

+0

безупречный, спасибо. Следуя этому руководству, он отлично работает –

Смежные вопросы