Я использую PhpStorm в качестве текущей IDE.
Единственная проблема, с которой я столкнулся, это то, что он не может найти мою php-библиотеку.
Я установил это: PHP-JS.
И под установкой я имею в виду сгенерированный php-js.so
файл, который я загрузил через php5enmod php-js
,
Библиотека работает:
// This is a valid namespace AND classname
$context = new JS\Context;
$result = $context->evaluate("var x = 3; var y = 4; var z = x + y; ++z;");
// will output 8
По какой-то (ну не странной) причине PhpStorm не может найти JS
пространство имен и, следовательно, нет классов из этого пространства имен.
Есть ли способ сказать PhpStorm, что я на самом деле вызываю существующий метод из допустимого класса из допустимого пространства имен?
Я пытался заставить его работать с использованием тегов docBlock, но ни один из них не соответствует тому, что мне нужно.
PhpStorm не сможет прочитать ваш двоичный файл .so
файл (.dll
на Windows) и извлекать интерфейсы PHP оттуда (и под «интерфейсом PHP» я подразумеваю классы / функции / константы / и т. д., которые расширение предлагает во время выполнения).
Поэтому вам нужно будет сделать то же самое, что и все другие двоичные расширения php (например, Phalcon’s DevTools) — сделать заглушки файлов.
Заглушка — это ограниченная версия PHP ваших классов / методов / функций / и т.д. с (необязательно) полным документом, но пустыми телами. Вы можете Ctrl + клик в любом стандартном классе PHP (например, MySQL
) и посмотрите, как это делается в PhpStorm (IDE откроет соответствующий файл-заглушку в другой вкладке редактора) .. или просто просмотрите их хранилище напрямую (спасибо @DanFromGermany за ссылку — https://github.com/JetBrains/phpstorm-stubs).
Примером такого файла-заглушки может быть (он покрывает код из вашего примера):
<?php
namespace JS;
class Context
{
/**
* Evaluate your JS code
*
* @param string $param JS code to evaluate
* @return mixed
*/
public function evaluate($param) {}
}
Просто разместите такие заглушки где-нибудь в вашем проекте (или используйте любой другой поддерживаемый способ, например, через PHP | Include paths
) — этот код только для IDE.
Такие заглушки могут использоваться любым IDE / редактором, который может анализировать исходный код .php
файлы и предлагают классы / функции оттуда в завершение кода. Поэтому имеет смысл спросите разработчиков из этого PHP-JS, чтобы обеспечить такие заглушки автоматически (как это делают разработчики Phalcon).
Других решений пока нет …