tags:

views:

62

answers:

1

Hello,

I have a problem that I cannot understand

I am trying to make my webservice work from a class. I try'd to echo the xml from some function in a controllerclass, but that diddn't work. So, I moved the xml around to a place where it did work.

That means that I placed it before the loader function is called. That's where it still works. If I place the xml underneath the call to the loader function it's not working anymore. Thus the loader function somehow is preventing it to work.

I used this mvc model as an example how to do it. Sofar it all worked, except for the xml implementation now.

This is where it starts

<?php
include "registraties/includes/config.php";
include (MYSQL);

//WEBSERVICE SECTIE

/*** include de init.php file ***/
 include 'includes/init.php';

/*** laad de router ***/
$registratie->router = new router($registratie);

/*** set het pad van de controller map ***/
$registratie->router->setPad ('controller');

/*** laad de template ***/
$registratie->template = new template($registratie);
$gebruikersnaam="kabouter";
header('Content-type: text/xml');
$status_code = 2;
     $output= "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
     $output.= "<response>\n";
     $output.= "\t<status>$status_code</status>\n";
     $output.= "\t<fout>$gebruikersnaam</fout>\n";
     $output.= "</response>";
     echo trim($output);
     exit();
/*** laad de controller ***/
$registratie->router->loader();
// at this place the xml does not work
?>

this is the router class with the loader function in it

<?php

class router {
    /*
    * @de registratie
    */
    private $registratie;

    /*
    * @het pad naar de controller map
    */
    private $pad;

    private $args = array();

    public $bestand;

    public $controller;

    public $actie;

    function __construct($registratie) {
     $this->registratie = $registratie;
    }

     /**
    *
    * @set controller directory pad
    *
    * @param string $pad
    *
    * @return void
    *
    */
    function setPad($pad) {

     /*** check of map bestaat***/
     if (is_dir($pad)){
      /*** set het pad ***/
     $this->pad = $pad;
     }else{
       throw new Exception ('Ongeldig controller pad: `' . $pad . '`');
     }    
    }

    /**
    *
    * @laad the controller
    *
    * @access public
    *
    * @return void
    *
    */
    public function loader(){

     /*** check de route ***/
     $this->getController();

     /*** als het bestand niet bestaat ***/
     if (is_readable($this->bestand) == false){

       $this->bestand = $this->pad.'/error404.php';
                $this->controller = 'error404';
     }

     /*** include de controller ***/
     include $this->bestand;

     /*** een nieuwe controller class instance ***/
     $class = $this->controller . 'Controller';
     $controller = new $class($this->registratie);

     /*** check of actie is callable ***/
     if (is_callable(array($controller, $this->actie)) == false){
      $actie = 'index';
     }else{
      $actie = $this->actie;
     }
     /*** voer de actie uit ***/
     $controller->$actie();
    }

    /**
    *
    * @get de controller
    *
    * @access private
    *
    * @return void
    *
    */
    private function getController() {

     /*** get de route van de url ***/
     $route = (empty($_GET['url'])) ? '' : $_GET['url'];

     if (empty($route)){
       $route = 'index';
     }else{
      /*** krijg de segmenten van de route ***/
      $parts = explode('/', $route);
      $this->controller = $parts[0];
      if(isset( $parts[1])){
       $this->actie = $parts[1];
      }
     }

     if (empty($this->controller)){
      $this->controller = 'index';
     }

     /*** get actie ***/
     if (empty($this->actie)){
       $this->actie = 'index';
     }

     /*** set het bestands adres  ***/
     $this->bestand = $this->pad .'/'. $this->controller . 'Controller.php';
    }
}
?>

thanks, Richard

A: 

Err - isn't it because of the 'exit()' invocation? I may be wrong.

meder
thanks, no that has no influence,it's for testingpurposes.The only thing matters here, is that if I place it under the loader() it doesn't work anymore.
Richard