2016-11-13 2 views
4

У меня есть файл index.php в каталоге Main;Как использовать пространство имен и использовать их в PHP?

Есть также каталог Helpers внутри Main с классом Helper.

Я попытался придать класс Helpers\Helperindex.php в качестве:

<? 

namespace Program; 

use Helpers\Helper; 


class Index { 

    public function __construct() 
    { 
     $class = new Helper(); 
    } 

} 

Но это не работает.

Как использовать пространство имен и использовать их в PHP?

+1

_But него не work._ Как именно? –

+0

Phpstorms выделяет как красный этот 'use' – MisterPi

+0

Неопределенное пространство имен' Помощники' – MisterPi

ответ

2

With Your Description, Your Directory Structure should look something similar to this:

Main* 
     -- Index.php 
     | 
     Helpers* 
       --Helper.php 

If You are going by the book with regards to PSR-4 Standards, Your Class definitions could look similar to the ones shown below:

Index.php

<?php 
     // FILE-NAME: Index.php. 
     // LOCATED INSIDE THE "Main" DIRECTORY 
     // WHICH IS PRESUMED TO BE AT THE ROOT OF YOUR APP. DIRECTORY 

     namespace Main;   //<== NOTICE Main HERE AS THE NAMESPACE... 

     use Main\Helpers\Helper; //<== IMPORT THE Helper CLASS FOR USE HERE 

     // IF YOU ARE NOT USING ANY AUTO-LOADING MECHANISM, YOU MAY HAVE TO 
     // MANUALLY IMPORT THE "Helper" CLASS USING EITHER include OR require 
     require_once __DIR__ . "/helpers/Helper.php"; 

     class Index { 

      public function __construct(){ 
       $class = new Helper(); 
      } 

     } 

helper.php

<?php 
     // FILE NAME Helper.php. 
     // LOCATED INSIDE THE "Main/Helpers" DIRECTORY 


     namespace Main\Helpers;  //<== NOTICE Main\Helpers HERE AS THE NAMESPACE... 


     class Helper { 

      public function __construct(){ 
       // SOME INITIALISATION CODE 
      } 

     } 
+0

Я все еще получаю ошибку: 'Class 'Main \ Helpers \ Helper' не найден в' в 'index.php' – MisterPi

+0

Может быть, я должен использовать' include() 'выше перед пространством имен? – MisterPi

+0

@MisterPi Вы должны найти способ либо автозагрузки класса, либо просто потребовать его вручную, либо потребовать, либо включить .... Сообщение было обновлено, чтобы отразить это .... – Poiz

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