2

I want to pass variable ($q_view) from a function q_view_main to a function sidebar. Also searched stackoverflow for solution but dont understand it.

Both functions are in same class.

function main()
{       
    $content=$this->content;

    $this->main_parts($content);

    $this->suggest_next();

    $this->widgets('main', 'bottom');

    $this->main_sidebar();
}
function main_sidebar()
{
    $content=$this->content;
    $main_class = ((!empty ($content['widgets']['main']['high'])) ? 'twelve' : 'nine');
    if (!empty ($content['widgets']['main']['high'])){                              
        $this->output('<DIV class="main-sidebar three columns">', '');
        $this->post_tags($q_view_for_sidebar, 'qa-q-view'); //want 
        $this->widgets('main', 'high');

        $this->output('</DIV>');
    }
}
function main_parts($content)
{
    foreach ($content as $key => $part) {
        $this->set_context('part', $key);
        $this->main_part($key, $part);
    }
}
function main_part($key, $part)
{
    if (strpos($key, 'custom')===0)
        $this->output_raw($part);

    elseif (strpos($key, 'form')===0)
        $this->form($part);

    elseif (strpos($key, 'q_list')===0)
        $this->q_list_and_form($part);

    elseif (strpos($key, 'q_view')===0)
        $this->q_view($part);

    elseif (strpos($key, 'a_form')===0)
        $this->a_form($part);

    elseif (strpos($key, 'a_list')===0)
        $this->a_list($part);

    elseif (strpos($key, 'ranking')===0)
        $this->ranking($part);

    elseif (strpos($key, 'message_list')===0)
        $this->message_list_and_form($part);

    elseif (strpos($key, 'nav_list')===0) {
        $this->section(@$part['title']);        
        $this->nav_list($part['nav'], $part['type'], 1);
    }
}
function q_view_main($q_view)
{           
    $this->q_view_stats($q_view);           
    $this->post_meta_author($q_view, 'qa-q-view');
    $this->q_view_content($q_view);
    $this->q_view_extra($q_view);
    $this->q_view_follows($q_view);
    $this->q_view_closed($q_view);


    $this->post_tags($q_view, 'qa-q-view');         
    $this->post_meta_other($q_view, 'qa-q-view');
    $this->q_view_buttons($q_view);
    $this->c_list(@$q_view['c_list'], 'qa-q-view');
    $this->output('</DIV>');

}
5
  • what are you doing when calling $this->content($postID); ? content is a function ? Commented Feb 15, 2013 at 5:26
  • what is the purpose of $this->output($this->content); ? Moreover, from the post function, you are not calling the sidebar function.. Commented Feb 15, 2013 at 5:28
  • $this->output($this->content); it's a property here, but $this->content($postID); a function there? Commented Feb 15, 2013 at 5:29
  • sorry writing mistake, $this->content is a global variable and $this->content($postID) is $this->article($postID) Commented Feb 15, 2013 at 5:33
  • $this->content is a global variable ... ehh, no it's not, it's an instance variable. Commented Feb 15, 2013 at 5:36

2 Answers 2

2

If both of your function are residing in the same class you can call a function inside another function using $this as pointed in other answers

class myclass{

public $var1 = 121;
    public function foo($postid){
        echo $postid;
    }
    public function bar(){
        $this->foo($this->var1);
    }
}
$objectmyclass = new myclass();
$objectmyclass->bar();

OR

class myclass{

public $var1 = 122;
    public function foo($postid){
        echo $postid;
    }
    public function bar($postid){
        $this->foo($postid);
    }
}
$objectmyclass = new myclass();
$objectmyclass->bar($objectmyclass->var1);

both ways you will be able to execute the statements inside the function foo hope this helps

Sign up to request clarification or add additional context in comments.

Comments

0

You just call post function in sidebar function if I am not mistaking to understand u

function sidebar($postID)
{
    $postID=$this->post($postID);
    $this->output($this->content);
    $this->tag($postID); //get $postID from sidebar
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.