Atom编辑器有一个hyperclick包。
我正在尝试构建一个可以
的包当用户在文件的类名上按Ctrl
+ left click
时打开文件。请参阅demo of hyperclick
我最初的想法是依靠作曲家。
我和我有几件事,
当前打开的文件路径,用户单击的字符串以及行号。
例如:假设我们有一个班级为
<?php
namespace Model\Table;
use Cake\ORM\Table;
class ArticlesTable extends Table
{
public function initialize(array $config)
{
$this->table('posts');
}
}
并且用户点击了Table
,我们的想法是在作曲家Cake/ORM/Table.php
方法的帮助下从适当的位置打开findFile()
。
<?php
$loader = require '/current/project/vendor/autoload.php';
$loader->findFile('Table');
然后我理解Table
不是FQCN,所以我们需要得到Cake\ORM\Table
的FQCN。有没有办法从现有的东西中获取FQCN?
我看过Reflection,但它也需要FQCN。我希望我们能否在第三方套餐上传递更少的信息。例如,有些人可能会建议您查看https://github.com/nikic/PHP-Parser。如果有任何其他方式(简单的PC;))让我知道。
谢谢
答案 0 :(得分:1)
使用token_get_all()
对当前PHP文件进行标记。然后:
new \a\b\Something();
时,请查看T_NS_SEPARATOR
和T_STRING
令牌)T_USE
令牌之前找到所有T_CLASS
令牌,看看其中一个令牌是否与Table
直接相关(例如use a\b\Table;
或use a\b\c as Table;
,在T_AS
)T_NAMESPACE
和';'