apache-flexcodeigniterzend-amf

Accessing services directory when setting up Zend AMF in Codeigniter


I followed the instructions in this tutorial to set up Zend AMF as a way of passing data from my flash app to my PHP app:

http://codeigniter.com/forums/viewthread/180414/

So I have the directory structure and everything as described there. This is my gateway controller:

class Gateway extends CI_Controller
{
        function __construct()
        {
                 parent::__construct();
                 $this->load->library('zend');

                 //root_folder + application + controllers + amf + services
                 define('SERVICES_FOLDER', APPPATH.'controllers/amf/services/');
        }

    public function index() 
    {

            $server = new Zend_Amf_Server();

            $server->setProduction(false);

            //$server->addFunction('testservice');

            $server->addDirectory(SERVICES_FOLDER);

            echo  $server->handle();
    }

}

And the APPPATH is /application/ so the path defined by SERVIES_FOLDER is "/application/controllers/amf/services" which is where my file 'testservice.php' sits.

When I try and connect to that service in flash:

var gateway:String = "http://mysite.com/amf/gateway";
con.connect(gateway);
con.call("Testservice.getMessage", new Responder(onResult, onFault));

It calls the onFault method and displays the error:

Plugin by name 'Testservice' was not found in the registry;

Which makes me think that the addDirectory() line in Gateway.php was the problem somehow. Interestingly, I also cannot access the testservice function through a URL, ie by going to mysite.com/amf/services/testservice.

Any thoughts on what might be going on here?


Solution

  • Figured it out, sort of.

    Instead of using the addDirectory method which I was having no luck with, I used the setClass method and created another class within the gateway.php file that has the functions, and now I can connect to those functions from flash.