Использование Zend_PDF в автономном режиме, как настроить включение класса земли - PullRequest
0 голосов
/ 10 апреля 2011

Я пишу крошечный школьный проект на php.Мне нужно было отобразить некоторую информацию в формате pdf и отправить файл по почте.

Когда я копирую папку PDF с файлом класса pdf из librairy. Здесь моя структура папок

  /
    /lib
      /Swift
        /....
      /Zend
        /Pdf
        Pdf.php
    test_file.php
   

вот содержимое test_file.php

require_once 'lib/Zend/Pdf.php';
$pdf = new Zend_Pdf();
$pdf->render();

и оно выдает

(!) Фатальная ошибка: require_once () [function.require]: Не удалось открыть обязательное 'Zend / Pdf / Page.php' (include_path = '.; C: \ xampp \ php \ PEAR; C: \ ZendFramework-1.10.8 \ bin;') в C: \ xampp\ htdocs \ schoolproject \ lib \ Zend \ Pdf.php в строке 27

но я заметил, что все классы включают, ссылаясь на верхнюю папку Zend, даже классы братьев и сестер, например:

require_once 'Zend/Pdf/Page.php';

Я немного запутался, как с этим бороться.Я думаю о функции автозагрузки или вручную исправляю требуемый путь в соответствии с моим проектом (что будет болезненно).

Какой лучший способ обойти это?

Спасибо за чтение этого.

Ответы [ 2 ]

2 голосов
/ 10 апреля 2011

Что ж, вам нужно настроить включаемый путь к корню папки библиотеки Zend Framework.

set_include_path(implode(PATH_SEPARATOR, array(
    'c:\ZendFramework-1.10.8\library',
    get_include_path(),
)));

Поскольку Zend использует псевдо-пространства имен, вам необходимо включить каталог верхнего уровня library/, а не library/Zend

Вы также можете использовать Автозагрузчик

require_once 'Zend/Loader/Autoloader.php';
Zend_Loader_Autoloader::getInstance();

Это позволяет вам не звонить require_once() каждый раз, когда вам нужно «требовать» файл для загрузки класса

1 голос
/ 10 апреля 2011

Вы должны зарегистрировать автозагрузчик ZF. После этого вы можете просто использовать классы, а автозагрузчик разберется с остальными.

$zf_path = 'PATH/TO/YOUR/LIB/FOLDER';
set_include_path($zf_path.PATH_SEPARATOR.get_include_path());
require_once($zf_path.'/Zend/Loader/Autoloader.php');
$loader = Zend_Loader_Autoloader::getInstance();
$loader->registerNamespace('Zend_');
...