В чём может быть проблема при работе с namespace?

336
24 октября 2017, 03:23

Не понимаю ошибку. Как он его не находит если я всё указал? Перехожу с java на php и может не замечаю тупую ошибку но из-за непривычки.

Использую PHPUnit.

1-й вариант:

<?php namespace ClassTester;
use PHPUnit_Framework_TestCase;
use data\User;
use model\DBHandler;  // Указал !!! 
class ClassTester extends PHPUnit_Framework_TestCase {
public function testExist(){
    $handler = new DBHandler();
    $exist = $handler->exist(new User(******", "*****", "*****", "*******"));
    if($exist){
        echo "User exist in database! ";
    }elseif(!$exist){
        echo "<pre>";
        echo "You need to register this user it is not exist! ";
        echo "</pre>";
    }
}

2-й вариант:

<?php 
use data\User;
class ClassTester extends PHPUnit_Framework_TestCase {
public function testExist(){
    $handler = new\model\DBHandler();
    $exist = $handler->exist(new User(******", "*****", "*****", "*******"));
    if($exist){
        echo "User exist in database! ";
    }elseif(!$exist){
        echo "<pre>";
        echo "You need to register this user it is not exist! ";
        echo "</pre>";
    }
}

Ошибка которую получаю в обоих случаях:

Fatal error: Uncaught Error: Class 'model\DBHandler' not found in /Applications/XAMPP/xamppfiles/htdocs/PHPUnitP/projectfiles/tests/classtester/ClassTester.php:8

Answer 1

Неймспейсы в PHP глобализуют идентификаторы. Т.е.

namespace ClassTester;
class ClassTester {

объявляет класс с именем ClassTester\ClassTester. Объявление

namespace ClassTester1;
class ClassTester {

объявит совершенно другой класс.

Оператор use позволяет указать какой именно идентификатор мы используем и не писать его полное имя.

При этом, если мы используем какой-то идентификатор, объявленный в другом файле, то мы должны этот файл подключить к нашему при помощи операторов inclide/require (_once) (явно или опосредовано)

READ ALSO
Проблема с sftp на php

Проблема с sftp на php

Имется следующий код:

259
Вывод массива из базы

Вывод массива из базы

Вообщем не знаю как сделать

276
Устойчивость бота к высоким нагрузкам [требует правки]

Устойчивость бота к высоким нагрузкам [требует правки]

Что нужно учесть при создании бота, устойчивому к высоким нагрузкам? В данном случае бот будет написан на PHP

274
Simple html dom вытащить ссылки из под javascript

Simple html dom вытащить ссылки из под javascript

Существует слайдер с картинками в javascriptТребуется вытащить оттуда ссылки на картинки с помощью PHP Simple HTML DOM Parser

278