Редактор 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 . Если есть какой-либо другой способ (легкий компьютер;)), дайте мне знать.
Спасибо
Редактор 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 . Если есть какой-либо другой способ (легкий компьютер;)), дайте мне знать.
Спасибо
Токенизировать текущий PHP-файл, используя token_get_all()
. Затем:
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
а также ';'