Aptana在模板文件中提示“$ this”

时间:2011-10-25 10:34:42

标签: php aptana aptana3

在PDT中,我可以做到

/* @var $this MyClass */

和eclipse将使用它来进行自动完成,建议等等......它在模板文件中很有用,它们被包含在模板引擎的类函数中。

Aptana Studio 3是否有同等效力?

我也试过

/** @var $this MyClass */

/** @var MyClass $this */

修改

我正在评估Aptana的使用,它比Eclipse + PDT有一些优势。所以,“使用另一个IDE”并不是一个真正的答案。

$this 不会由IDE自动解析为正确的类,因为它在类定义之外使用。

使用示例:

  • Template.class.php:

    class Template {
        public function render() {
            include 'template.inc.php';
        }
        private function foo() {
            echo 'bar!';
        }
    }
    
  • template.inc.php

    <?php /*@var $this Template*/ ?>
    <html>
    <body>
      <?php 
      /* I want that when I type "$this->" the IDE suggests me "foo()" */
      $this->foo(); 
      ?>
    </body>
    </html>
    

2 个答案:

答案 0 :(得分:1)

升级到3.0.7。它似乎在该版本中可用。

请参阅http://jira.appcelerator.org/browse/APSTUD-1714

答案 1 :(得分:-2)

模板中的重点是保持逻辑和视图分离,你正在做的是添加带有视图的逻辑,这样你就不会真正做任何需要的事情了。

你想做类似的事情:

<html>
<body>
{TPL.MY_TPL_VAR}
</body>
</html>

然后在你的模板类中,你会有这样的东西:

$myTemplateVars = array('{TPL.MY_TPL_VAR}' => 'This is my content');

foreach($myTemplateVars as $key => $var){
    $output = str_replace($key, $val, $key);
}

return $output;

第二件事就是$这是PHP中预先定义的“关键字”,它只能在一个类中使用,所以你想要通过这样的方式初始化一个新的类实例:

$objTpl = new Template();
$objTpl->yourFunc();

我希望这会有所帮助:)