PHP-пакет composer hyperclick для текстового редактора Atom

Редактор Atom есть hyperclick пакет.

Я пытался создать пакет, который может

Откройте файл, когда пользователь нажмет Ctrl + left click на имя класса из файла. Увидеть демо гиперклик

Моими первыми мыслями было положиться на композитора.

У меня есть несколько вещей со мной,

Текущий открытый путь к файлу, строка, по которой щелкнул пользователь, и номер строки.

Например: предположим, у нас есть класс как

<?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, поэтому нам нужно получить FQCN, который Cake\ORM\Table, Есть ли способ получить FQCN из имеющихся у меня вещей?

Я посмотрел на Reflection, но это также нужно FQCN. Я хотел бы, чтобы мы могли передавать очень мало на сторонних пакетах. Например, некоторые из вас могут предложить посмотреть на https://github.com/nikic/PHP-Parser . Если есть какой-либо другой способ (легкий компьютер;)), дайте мне знать.

Спасибо

2

Решение

Редактор Atom есть hyperclick пакет.

Я пытался создать пакет, который может

Откройте файл, когда пользователь нажмет Ctrl + left click на имя класса из файла. Увидеть демо гиперклик

Моими первыми мыслями было положиться на композитора.

У меня есть несколько вещей со мной,

Текущий открытый путь к файлу, строка, по которой щелкнул пользователь, и номер строки.

Например: предположим, у нас есть класс как

<?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, поэтому нам нужно получить FQCN, который Cake\ORM\Table, Есть ли способ получить FQCN из имеющихся у меня вещей?

Я посмотрел на Reflection, но это также нужно FQCN. Я хотел бы, чтобы мы могли передавать очень мало на сторонних пакетах. Например, некоторые из вас могут предложить посмотреть на https://github.com/nikic/PHP-Parser . Если есть какой-либо другой способ (легкий компьютер;)), дайте мне знать.

Спасибо

самый старый «data-shortcut =» O

Другие решения

Токенизировать текущий PHP-файл, используя token_get_all(). Затем:

  • Узнайте, является ли строка, на которую нажали, FQCN (например, при использовании 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 а также ';'
голосует «data-shortcut =» V

1
По вопросам рекламы [email protected]