0

I'm trying to install Zend PDF in order to fill out editable PDFs on my client's shared hosting account (media temple). I have it enabled now, confirmed in phpinfo https://i.stack.imgur.com/23N92.png but after that, I can't find out what I need to get started. If I try loading the Zend_Pdf class, I receive a "Fatal error: Class 'Zend_Loader' not found" message.

raina77ow
  • 103,633
  • 15
  • 192
  • 229
joren
  • 1,135
  • 2
  • 11
  • 22

2 Answers2

1

These are very different. Zend Guard Loader is used to run PHP scripts encoded by Zend Guard. And Zend Loader component is used, among other things, to simplify the development. For example, this...

$pdf = new Zend_Pdf(); // what's Zend_Pdf, people?

... statement is meaningless to PHP unless it knows what is Zend_Pdf class. Thankfully, in PHP there's a special mechanism of importing these files automatically - autoloading. Here's how to do it with Zend_Loader:

set_include_path(
    implode(PATH_SEPARATOR, array(
        get_include_path(),
        PATH_TO_ZF_LIBRARY
    )));

require_once 'Zend/Loader/Autoloader.php';
$autoloader = Zend_Loader_Autoloader::getInstance();
...
$pdf = new Zend_Pdf(); // no error, as correct file should be imported automatically

Actually, if it's only a single file that will use Zend component, it's not required that you use the autoloading mechanism. A simple require_once (no pun intended) would suffice:

require_once 'Zend\Pdf.php';
...
$pdf = new Zend_Pdf(); // oh, now I know all about Zend_Pdf!
raina77ow
  • 103,633
  • 15
  • 192
  • 229
  • Awesome, that clears up a lot of confusion on my part, thanks! I tried just doing the Pdf.php include by itself, but it failed when it tried finding another php file to include with it, so I'm guessing I need to use the autoloader. – joren Oct 16 '12 at 16:33
  • I downloaded the latest version, but there is no Autoloader.php that came with it http://i.imgur.com/oGBRL.png so I tried this, but still ended up getting a Class 'Zend_Loader_autoloader' not found: `set_include_path( implode('/', array( get_include_path(), 'zend/library/Zend/' ))); require_once 'zend/library/Zend/Loader/StandardAutoloader.php'; $autoloader = Zend_Loader_Autoloader::getInstance(); $pdf = new Zend_Pdf();` Ack, trying to figure out how to format code on here now :\ – joren Oct 16 '12 at 16:36
  • It seems that while you (obviously) get the Zend_Pdf from ZF 1, you try to use Zend_Autoloader from ZF 2 (the latest version) for it, no? ) My advice was about the same version of framework that has Zend_Pdf included. Do you want to use ZF2 autoloader? – raina77ow Oct 16 '12 at 16:39
  • AHhhh I didn't even realize there were two versions. Thank you! That did the trick, I should be able to take it from here. Someone posted a patch on this thread http://stackoverflow.com/questions/9139787/how-to-fill-pdf-form-in-php that allows it to fill in editable fields that I'll be using. Great! Sorry again about the bad formatting. – joren Oct 16 '12 at 16:44
1

Zend Guard Loader and Zend Loader are not the same thing. Zend Guard is another Zend product and has nothing to do with Zend Framework. Zend Loader is the name of the class loader within Zend Framework.

Make sure that you have a copy of Zend Framework within your application and that you've setup the include path to point at this location.

Tim Fountain
  • 33,093
  • 5
  • 41
  • 69