PHP 原子文本编辑器的 hyperclick 包
PHP hyperclick package for atom text editor
Atom 编辑器有一个 hyperclick 包。
我正在尝试构建一个可以
当用户在文件中的 class 名称上按 Ctrl
+ left click
时打开文件。请参见 demo of hyperclick
我最初的想法是依赖composer。
我有点东西,
当前打开的文件路径,用户点击的字符串,行号。
例如:假设我们有一个 class 作为
<?php
namespace Model\Table;
use Cake\ORM\Table;
class ArticlesTable extends Table
{
public function initialize(array $config)
{
$this->table('posts');
}
}
并且用户点击 Table
,想法是在 composer findFile()
方法的帮助下从适当的位置打开 Cake/ORM/Table.php
。
<?php
$loader = require '/current/project/vendor/autoload.php';
$loader->findFile('Table');
然后我明白了 Table
不是 FQCN,所以我们需要得到 Cake\ORM\Table
的 FQCN。有什么办法可以从我现有的东西中获取 FQCN 吗?
我看过Reflection,但它也需要FQCN。我希望我们能少中继 3rd 方包。例如,有些人可能会建议查看 https://github.com/nikic/PHP-Parser。如果有任何其他方式 (easy pc ;) ) 让我知道。
谢谢
使用 token_get_all()
标记当前 PHP 文件。那么:
- 发现点击的字符串是否是 FQCN(例如,当使用
new \a\b\Something();
时,查看 T_NS_SEPARATOR
和 T_STRING
标记)
- 找到
T_CLASS
标记之前的所有 T_USE
个标记,看看其中一个标记是否直接链接到 Table
(例如 use a\b\Table;
或 use a\b\c as Table;
,另请参阅 T_AS
)
- 通过解析
T_NAMESPACE
和 ';'
之间的所有 none-whitespace 标记来添加当前命名空间
Atom 编辑器有一个 hyperclick 包。
我正在尝试构建一个可以
当用户在文件中的 class 名称上按 Ctrl
+ left click
时打开文件。请参见 demo of hyperclick
我最初的想法是依赖composer。
我有点东西,
当前打开的文件路径,用户点击的字符串,行号。
例如:假设我们有一个 class 作为
<?php
namespace Model\Table;
use Cake\ORM\Table;
class ArticlesTable extends Table
{
public function initialize(array $config)
{
$this->table('posts');
}
}
并且用户点击 Table
,想法是在 composer findFile()
方法的帮助下从适当的位置打开 Cake/ORM/Table.php
。
<?php
$loader = require '/current/project/vendor/autoload.php';
$loader->findFile('Table');
然后我明白了 Table
不是 FQCN,所以我们需要得到 Cake\ORM\Table
的 FQCN。有什么办法可以从我现有的东西中获取 FQCN 吗?
我看过Reflection,但它也需要FQCN。我希望我们能少中继 3rd 方包。例如,有些人可能会建议查看 https://github.com/nikic/PHP-Parser。如果有任何其他方式 (easy pc ;) ) 让我知道。
谢谢
使用 token_get_all()
标记当前 PHP 文件。那么:
- 发现点击的字符串是否是 FQCN(例如,当使用
new \a\b\Something();
时,查看T_NS_SEPARATOR
和T_STRING
标记) - 找到
T_CLASS
标记之前的所有T_USE
个标记,看看其中一个标记是否直接链接到Table
(例如use a\b\Table;
或use a\b\c as Table;
,另请参阅T_AS
) - 通过解析
T_NAMESPACE
和';'
之间的所有 none-whitespace 标记来添加当前命名空间