fufu
fufu

Reputation: 53

codeigniter using function inside a controller

For some reason I cant run the change() function and everything after it stops. I try with $this->change() but the effect is the same. If I run the function in a php file its working and the num is changing.

class Test extends CI_Controller {

    function __construct(){
        parent::__construct();
    }

    public function home(){

        $num = 1;

        change($num);


        function change($num,$rand=false){

            echo 'inside function'; // this is not shown

            if($num < 4) {
                $rand = rand(1,9);
                $num = $num.$rand;
                change($num,$rand);
            } else {
                echo $num;
            }
        }
        echo 'done'; // this is not shown

    }

}

Upvotes: 0

Views: 9521

Answers (2)

Andre Dublin
Andre Dublin

Reputation: 1158

You will probably be better off calling a private or public function to process data ( or for more complex/involved processes a library ).

ie

class Test extends CI_Controller
{
  public function __construct()
  {
      parent::__construct();
  }

  public function home()
  {
    $num = 1;

    echo $this->_change($num);
    echo 'done'; // this is not shown
  }

  // private or public is w/o the underscore
  // its better to use private so that CI doesn't route to this function
  private function _change($num, $rand = FALSE)
  {
        if($num < 4) {
            $rand = rand(1,9);
            $num = $num + $rand;
            $this->_change($num,$rand);
        } else {
            return $num;
        }
  }
}

Upvotes: 4

Stan
Stan

Reputation: 26501

lol, you are trying to write function inside function.

try running your class with this code

class Test extends CI_Controller {

    function __construct(){
        parent::__construct();
    }

    public function home(){

        $num = 1;

        $this->change($num);
        echo 'done'; // this is not shown

    }

    public function change($num,$rand=false){

            echo 'inside function'; // this is not shown

            if($num < 4) {
                $rand = rand(1,9);
                $num = $num.$rand;
                change($num,$rand);
            } else {
                echo $num;
            }
    }

}

Upvotes: 3

Related Questions