Php 模板文件中“$this”的Aptana类型提示
在PDT中,我可以做到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
/* @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。它似乎在该版本中可用
请参见模板中的全部要点是将逻辑和视图分开,您在模板中所做的是添加带有视图的逻辑,这样您就不会真正执行任何需要的操作 您希望执行以下操作:
<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等语言,因为你说它们会在一定程度上降低速度。这就是为什么我写了自己的模板系统。无论如何,我同意不同意。我只是想在你不知道的情况下添加我的输入。