Тип Aptana, намекающий на `$ this` в файлах шаблонов - PullRequest
2 голосов
/ 25 октября 2011

В PDT я могу сделать

/* @var $this MyClass */

, и eclipse будет использовать это для автозаполнения, предложений и так далее ... Это полезно в файлах шаблонов, которые включаются в функцию класса из движка шаблонов..

Есть ли аналог Aptana Studio 3?

Я также пытался

/** @var $this MyClass */

и

/** @var MyClass $this */

РЕДАКТИРОВАТЬ

Я оцениваю использованиеАптана, у нее есть некоторые преимущества перед 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 ]

1 голос
/ 25 октября 2011

Обновление до 3.0.7. Похоже, что доступно в этой версии.

См. http://jira.appcelerator.org/browse/APSTUD-1714

0 голосов
/ 25 октября 2011

Смысл в шаблонах состоит в том, чтобы держать логику и представления отдельно, то, что вы делаете там, это добавление логики с представлениями, чтобы вы на самом деле ничего не делали.

Вы хотите сделать что-то вроде:

<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();

Надеюсь, это поможет:)

...