@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
at recaptime-dev/main 49 lines 1.5 kB view raw
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}