【问题标题】:PHP hyperclick package for atom text editor用于原子文本编辑器的 PHP hyperclick 包
【发布时间】:2016-01-23 15:01:13
【问题描述】:

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,想法是在composer findFile()方法的帮助下从适当的位置打开Cake/ORM/Table.php

<?php
$loader = require '/current/project/vendor/autoload.php';
$loader->findFile('Table');

然后我明白Table 不是FQCN,所以我们需要得到FQCN 是Cake\ORM\Table。有没有办法从我现有的东西中获取 FQCN?

我看过 Reflection,但它也需要 FQCN。我希望我们能在 3rd 方包裹上传递更少的信息。例如,你们中的一些人可能会建议查看https://github.com/nikic/PHP-Parser。如果还有其他方法(简单的电脑;))请告诉我。

谢谢

【问题讨论】:

    标签: php composer-php atom-editor


    【解决方案1】:

    使用 token_get_all() 标记当前 PHP 文件。那么:

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

    【讨论】:

    • 谢谢 :) 。在路上:)。
    • 你的答案有一些我可能没有的东西,例如:如果你提到的类名是新的 \a\b\c ,因为目前我只有 c 作为字符串。我可能想做一些事情从 js 本身获取字符串然后解析:) .
    猜你喜欢
    • 2018-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-18
    • 1970-01-01
    相关资源
    最近更新 更多