[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Подключение пространства имён
Страницы: 1, 2
serjazz
Здравствуйте.
Прошу сильно не пинать, возможно вопрос из разряда "нубских", но с пространствами имен ранее напрямую не встречался.

Существует такой парсер для работы с csv - League\Csv (первая ссылка в поиске на google).
Скачал его через composer, пытаюсь подключить как указано в мануале:

<?php
use League\Csv\Reader;
require_once 'vendor/autoload.php';

$csv = new Reader('../../tmp/import_test.csv');

Возвращает ошибку
Fatal error: Class 'League\Csv\Reader' not found in /var/www/test/admin/epnew/index.php

структура каталогов у меня в директории epnew:
- vendor (оригинальная структура решения сохранена)
- index.php (в котором, собственно подключаю)

Версия PHP 5.4.6-1ubuntu1.8 (cli) (built: Apr 4 2014 01:34:09)

Не могу сообразить, что делаю не так. Прошу помощи. Заранее благодарен.
SlavaFr
поменяй местами строчки use с require_once аутолоад.

_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
serjazz
Благодарю за ответ.
Уже менял по всякому и даже пробовал альтернативный вариант с
spl_autoload_register(function ($class) {
$prefix = 'League\\Csv\\';
$base_dir = __DIR__ . '/src/';
$len = strlen($prefix);
if (strncmp($prefix, $class, $len) !== 0) {
// no, move to the next registered autoloader
return;
}
$relative_class = substr($class, $len);
$file = $base_dir . str_replace('\\', '/', $relative_class) . '.php';
if (file_exists($file)) {
require $file;
}
}
);
Не помогает.
SlavaFr
измени немного функцию, чтоб мы могли увидеть какой файл он не может инклудить в твоем случае.

....
if (file_exists($file)) {
require $file;
return;
}
throw new Exception("can not load class $class in file $file");



_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
serjazz
Добавил, получился следующий код:
<?php
//use League\Csv\Reader;
require __DIR__ . '/vendor/autoload.php';

spl_autoload_register(function ($class) {
$prefix = 'League\\Csv\\';
$base_dir = __DIR__ . '/src/';
$len = strlen($prefix);
if (strncmp($prefix, $class, $len) !== 0) {
// no, move to the next registered autoloader
return;
}
$relative_class = substr($class, $len);
$file = $base_dir . str_replace('\\', '/', $relative_class) . '.php';
if (file_exists($file)) {
require $file;
return;
}
throw new Exception("can not load class $class in file $file");
});

$csv = new Reader('../../tmp/import_test.csv');
Возвращает просто ошибку:
Fatal error: Class 'Reader' not found in /var/www/test/admin/epnew/index.php on line 23

Отрабатывает до строчки
if (strncmp($prefix, $class, $len) !== 0) {
в которой возвращается -1
строка
$base_dir = __DIR__ . '/src/';
возвращает
string '/var/www/test/admin/epnew/src/' (length=30)
что соответствует реально существующему пути (вынес директорию src в корень epnew).
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.