qwelukasz
głupie pytanie o #php 7.0.8

mam pliki:

www\script.php
www\Api\Test.php

Api\Test.php:

php

namespace Api;

class Test
{..}

script.php
use \Api\Test;
$noIp = new Test('test1','test2');

i dostaję fatal:

Fatal error: Uncaught Error: Class 'Api\Test' not found in \script.php:5
  • Najlepsze
  • Wszystkie komentarze
Jurigag
@qwelukasz: bo nie załadowałeś tej klasy ? top kek
haxx
haxx
haxx
0
@qwelukasz: nie znam się do końca, ale dlaczego na serwerze unixowym używasz backslashy do ścieżek?
qwelukasz
qwelukasz Autor
0
@haxx: tak wlasciwie to to jest windows, ~\ dodalem zeby wskazac ze pliki sa w tej samej lokalizacji :S
Juz poprawilem
ghost1511
@qwelukasz: nie masz żądnej funkcji która automatycznie ładuje klasy.
panDocent
@qwelukasz: Plik script.php nie zna zawartości pliku Api\Test.php. Zastanów się nad używaniem funkcji http://php.net/manual/en/function.require-once.php#function.require-once lub poczytaj o composer https://getcomposer.org/ czy PSR-4 http://www.php-fig.org/psr/psr-4/
panDocent
@haxx: jeżeli chodzi o te backslash w use \Api\Test to nie dotyczy ścieżki w systemie operacyjnym. W PHP w podobnie jak innych językach są przestrzenie nazw (Namespaces) i tu jest informacja o tym, których używamy.

http://php.net/manual/pl/language.namespaces.rationale.php
B.....e
B.....e
@qwelukasz:

spl_autoload_register(function ($class_name) {
include 'Api/'.$class_name . '.php';
});
$noIp = new Test('test1','test2');
normanos
nie znam się do końca


@haxx: fakt
Kalvot
Kalvot
@qwelukasz: polecam dołączanie plików przed użyciem ( ͡° ͜ʖ ͡°)