Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z autoloader PHPExcel
Forum PHP.pl > Forum > PHP
aras785
Witam. Korzystam z tego https://github.com/aras123/MiniFramework i w jednym kontrolerze chciałem użyć biblioteki phpexcel: http://msdn.microsoft.com/pl-pl/library/od...i-phpexcel.aspx

W akcji normalnie sobie includuje a następnie chce wywołać to wywala błąd ze nie znaleziono klasy: Application/Controller/PHPExcel_IOFactory

Biblioteka phpexcel posiada własny autoloader i on niestety nie działa kiedy wrzucę go do w/w kodu.

Trzymam bibliotekę w głównym folderze w Excel/...


Proszę o pomoc
buliq
includuj główny plik PHPExcel a następnie z IOFactory
aras785
tak też robię:

  1. require_once 'Lib/Excel/PHPExcel/IOFactory.php';
  2. require_once 'Lib/Excel/PHPExcel.php';
  3. $fileType_raport = PHPExcel_IOFactory::identify($fileName_raport);


I dzieje się co wyżej napisałem

Dokładny komunikat:

Kod
Fatal error: Class 'Application\Controller\PHPExcel_IOFactory' not found in /Application/Controller/TestController.php on line 36
buliq
na odwrót! najpierw PHPExcel
aras785
To samo...
buliq
odpal realpath('Lib/Excel/PHPExcel/IOFactory.php')
a najlepiej glob(''*', GLOB_ONLYDIR );
aras785
ścieżka się zgadza:

Chodzi o to, autoloader z phpexcel nie rusza.

Kod
realpath('Lib/Excel/PHPExcel/IOFactory.php') - Lib/Excel/PHPExcel/IOFactory.php


// ...
Dla testu stworzyłem plik w folderze Excel o nazwie: test.php

i w nim klasę Cos


Następnie include do kontrolera i błąd jest taki sam:

Kod
Fatal error: Class 'Application\Controller\Cos' not found in /Application/Controller/TestController.php on line 25
buliq
W autoloaderze PHPExcel masz metodę register, zobacz czy się uruchamia.
Jaka wersja PHP?
aras785
Wolałbym się skupić na tym plik test.php i klasie Cos bo błąd jest taki sam. Wersja php 5.4

Może to wina namespace i moge autoloader w index.php??

może namespace?
buliq
Jasne ... namespace jest inne niż \ ? to dodaj do wywołania \ żeby powiedzieć że to jest w głównym namespace.
aras785
Miałem namespace Application\Controller
Zmieniłem na \Application\Controller i wywaliło błąd:

Kod
Fatal error: Undefined constant 'Application\Controller' in /Application/Controller/ToolsController.php on line 2


Mistrzowie ktoś pomoże? smile.gif

?

dodam jeszcze że zamiast __autoload wykorzystałem spl_autoload_register('moj_autoloader') i później w funkcji przed include biblioteki PHPExcel użyłem: spl_autoload_unregister('moj_autoloader') ale i to nic nie dało...
Spawnm
Jeśli tworzysz obiekt w namespace controller to z automatu uznaje że klasa też jest w tej przestrzeni, czyli próbuje załadować
Application\Controller\PHPExcel_IOFactory
Unikniesz tego dając: \PHPExcel_IOFactory::identify($fileName_raport);
aras785
Dziękuję bardzo!! Pozdrawiam serdecznie smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.