用于原子文本编辑器的PHP hyperclick包

时间:2016-01-23 15:01:13

标签: php composer-php atom-editor

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;))让我知道。

谢谢

1 个答案:

答案 0 :(得分:1)

使用token_get_all()对当前PHP文件进行标记。然后:

  • 发现点击的字符串是否为FQCN(例如,在使用new \a\b\Something();时,请查看T_NS_SEPARATORT_STRING令牌)
  • T_USE令牌之前找到所有T_CLASS令牌,看看其中一个令牌是否与Table直接相关(例如use a\b\Table;use a\b\c as Table;,在T_AS
  • 通过在T_NAMESPACE';'
  • 之间解析所有非空白令牌来预先添加当前命名空间
相关问题