@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.)
hq.recaptime.dev/wiki/Phorge
phorge
phabricator
1<?php
2
3final class DiffusionPhpExternalSymbolsSource
4 extends DiffusionExternalSymbolsSource {
5
6 public function executeQuery(DiffusionExternalSymbolQuery $query) {
7 $symbols = array();
8
9 if (!$query->matchesAnyLanguage(array('php'))) {
10 return $symbols;
11 }
12
13 $names = $query->getNames();
14
15 if ($query->matchesAnyType(array('function'))) {
16 $functions = get_defined_functions();
17 $functions = $functions['internal'];
18
19 foreach ($names as $name) {
20 if (in_array($name, $functions)) {
21 $symbols[] = $this->buildExternalSymbol()
22 ->setSymbolName($name)
23 ->setSymbolType('function')
24 ->setSource(pht('PHP'))
25 ->setLocation(pht('Manual at php.net'))
26 ->setSymbolLanguage('php')
27 ->setExternalURI('https://www.php.net/function.'.$name);
28 }
29 }
30 }
31 if ($query->matchesAnyType(array('class'))) {
32 foreach ($names as $name) {
33 if (class_exists($name, false) || interface_exists($name, false)) {
34 if (id(new ReflectionClass($name))->isInternal()) {
35 $symbols[] = $this->buildExternalSymbol()
36 ->setSymbolName($name)
37 ->setSymbolType('class')
38 ->setSource(pht('PHP'))
39 ->setLocation(pht('Manual at php.net'))
40 ->setSymbolLanguage('php')
41 ->setExternalURI('https://www.php.net/class.'.$name);
42 }
43 }
44 }
45 }
46
47 return $symbols;
48 }
49}