如何在Code Igniter中使用Symfony或Zend组件?

I would like if there is a simple and clean way to use ZF´s (or Symfony´s) component library in a CodeIgniter application, because there is a lot of good and useful stuff there that CI don´t have.

It´s possible. For example for ZF, you would need to do something like:

1) Setup CodeIgniter.

2) Download the Zend Framework. Extract the archive.

3) From the ZF files, copy the “Zend” directory from inside the “library” directory.

4) Paste the directory into the “system/application/libraries” directory. So ultimately, the new location of the copied “Zend” directory would be “system/application/libraries/Zend”. If you’re on Linux/Unix, we probalby will need to deal with file permissions. I guess you will need to make the Zend directory accessible by all (use chmod).

5) In the same “system/application/libraries/” directory, create a new file named “Zend.php” and put the following contents:

<?php if (!defined('BASEPATH')) {exit('No direct script access allowed');}

class Zend
{

  function __construct()
  {

    ini_set('include_path',
    ini_get('include_path') . PATH_SEPARATOR . APPPATH . 'libraries');

  }


  function load($class)
  {
    require_once (string) $class . EXT;

  }
}

?>

Now test the setup using the CI´s default Welcome controller

<?php

class Welcome extends Controller {

  function Welcome()
  {
    parent::Controller();
  }

  function index()
  {
     $this->load->library('zend');
     $this->zend->load('Zend/Service/Flickr');

    $flickr = new Zend_Service_Flickr('12e99caebb8f305fff5a943606ecde18');

    $results = $flickr->tagSearch('worldcup');



    foreach ($results as $result)
    {

        $photo = $result->Small;
        echo "<a href=\"{$photo->clickUri}\"><img src=\"{$photo->uri}\" /></a><br /><br />";

    }

  }
}
?>

You can use components symfony by installing them via composer.

For example, you can install the varDumper component which provides a better dump() function that you can use instead of var_dump.

composer require symfony/var-dumper

the composer will install the dumper component with all his dependecy

then include the autoload and use the dump function

require __DIR__.'/vendor/autoload.php';

// create a variable, which could be anything!
$someVar = ...;

dump($someVar);