Php 模板文件中“$this”的Aptana类型提示

Php 模板文件中“$this”的Aptana类型提示,php,aptana,aptana3,Php,Aptana,Aptana3,在PDT中,我可以做到 /* @var $this MyClass */ eclipse会将其用于自动完成、建议等。。。它在模板文件中很有用,模板文件从模板引擎包含到类的函数中 Aptana Studio 3是否有同等的版本 我也试过了 /** @var $this MyClass */ 及 编辑 我正在评估Aptana的使用,它比Eclipse+PDT有一些优势。所以,“使用另一个IDE”并不是真正的答案 $this不会被IDE自动解析为正确的类,因为它在类定义之外使用 用法示例: Te

在PDT中,我可以做到

/* @var $this MyClass */
eclipse会将其用于自动完成、建议等。。。它在模板文件中很有用,模板文件从模板引擎包含到类的函数中

Aptana Studio 3是否有同等的版本

我也试过了

/** @var $this MyClass */

编辑

我正在评估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>
    
    
    

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


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


请参见

模板中的全部要点是将逻辑和视图分开,您在模板中所做的是添加带有视图的逻辑,这样您就不会真正执行任何需要的操作

您希望执行以下操作:

<html>
<body>
{TPL.MY_TPL_VAR}
</body>
</html>
第二件事是$this是PHP中预定义的“关键字”,它只能在类中使用,因此您需要通过如下操作初始化类的新实例:

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

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

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

我希望这能有所帮助:)

模板中的全部要点是将逻辑和视图分开,您在那里所做的是添加带有视图的逻辑,这样您就不会真正做任何需要的事情

您希望执行以下操作:

<html>
<body>
{TPL.MY_TPL_VAR}
</body>
</html>
第二件事是$this是PHP中预定义的“关键字”,它只能在类中使用,因此您需要通过如下操作初始化类的新实例:

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

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

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

我希望这有帮助:)

使用一个好的IDE来正确地支持它们吗?编辑:虽然您根本不需要键入提示
$this
,但它显然是当前类的同一类型…使用正确支持它们的好IDE?编辑:虽然您根本不需要键入提示
$this
,但它显然与当前类的类型相同……谢谢您的建议。然而,在IMO中,使用模板“语言”并不能真正提高可读性,但会降低代码执行速度,因为此时我们有一种解释语言(PHP)来解释另一种语言。如果有人能写
{TPL.MY\u TPL\u VAR}
他也能写
$this->data('varname')。模板语言的思想是将所有内容分开,以阻止开发人员、设计师和用户不知道发生了什么。因此,如果一个只懂HTML/CSS的设计师,他们可以进入模板文件,在一个地方更新所有内容,而不与任何其他代码混在一起,这将很好地工作。如果有人进入3、4、5类,找到一个应该分开的HTML,那么它的可读性就开始下降。它可能不会直接更具可读性,但通常会更具可读性。您的方法和我的方法之间的唯一区别是,我使用PHP本身作为模板语言。模板当然不包含任何控制器逻辑。但是,它们包含对流的最小控制(ifelse、循环等)。因此,大多数模板语言(smarty等)必须重新构建这些语言结构,因此必须遵守一个我理解你的意思的规则,但我不同意使用smarty等语言,因为你说它们会在一定程度上降低速度。这就是为什么我写了自己的模板系统。无论如何,我同意不同意。我只是想在你不知道的情况下添加我的意见。谢谢你的建议。然而,在IMO中,使用模板“语言”并不能真正提高可读性,但会降低代码执行速度,因为此时我们有一种解释语言(PHP)来解释另一种语言。如果有人能写
{TPL.MY\u TPL\u VAR}
他也能写
$this->data('varname')。模板语言的思想是将所有内容分开,以阻止开发人员、设计师和用户不知道发生了什么。因此,如果一个只懂HTML/CSS的设计师,他们可以进入模板文件,在一个地方更新所有内容,而不与任何其他代码混在一起,这将很好地工作。如果有人进入3、4、5类,找到一个应该分开的HTML,那么它的可读性就开始下降。它可能不会直接更具可读性,但通常会更具可读性。您的方法和我的方法之间的唯一区别是,我使用PHP本身作为模板语言。模板当然不包含任何控制器逻辑。但是,它们包含对流的最小控制(ifelse、循环等)。因此,大多数模板语言(smarty等)必须重新构建这些语言结构,因此必须遵守一个我理解你的意思的规则,但我不同意使用smarty等语言,因为你说它们会在一定程度上降低速度。这就是为什么我写了自己的模板系统。无论如何,我同意不同意。我只是想在你不知道的情况下添加我的输入。