Jump to content

Archived

This topic is now archived and is closed to further replies.

BZero

"$this" outside classes? Someone explain...

Recommended Posts

I'm just starting to learn OOP and frameworks, and I read this (http://akrabat.com/wp-content/uploads/Getting-Started-with-Zend-Framework.pdf) Zend framework tutorial, and it uses "$this" all over the place. Isn't "$this" supposed to be used inside classes to refer to the class it's in? If you, for example, go to the bottom of page 12 in that tutorial, "$this" is used right at the beginning of a new file. Is that entire .phtml file somehow inside a class? I'm confused...

Share this post


Link to post
Share on other sites

Simplest way to check what $this is, is to var_dump($this);

AFAIR in this case it's an instance of Zend_View, and a view script are executed in its context.

Share this post


Link to post
Share on other sites
    /**
     * Includes the view script in a scope with only public $this variables.
     *
     * @param string The view script to execute.
     */
    protected function _run()
    {
        if ($this->_useViewStream && $this->useStreamWrapper()) {
            include 'zend.view://' . func_get_arg(0);
        } else {
            include func_get_arg(0);
        }
    }

Share this post


Link to post
Share on other sites

OK, so if I make a new .phtml file in views/scripts/{controller name}/ and use "$this" in that file, that would automatically refer to the Zend_View class, without me having to do anything else to make it that way?

Share this post


Link to post
Share on other sites

Assuming you configured a view in your controller

Share this post


Link to post
Share on other sites

But that's done automatically by ViewRenderer, right?

 

From the tutorial: "Zend Framework provides an Action Helper for us called the ViewRenderer. This takes care of initialising a

view property in the controller($this->view) for us[...]"

Share this post


Link to post
Share on other sites

I believe that's the case in current version of ZF. I think in the past you had to create a View explicitly.

Share this post


Link to post
Share on other sites

Yeah. I just googled "ViewRenderer" and found this announcement from its developer, from 2007: http://devzone.zend.com/article/2072

 

Anyway, thanks for your help, man. This has cleared up my confusion a bit. I don't have any more questions right now, but I'll go find some more tutorials, and then I'll undoubtedly be back with more questions later. :)

Share this post


Link to post
Share on other sites

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.