Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/diffusion/symbol/DiffusionPhpExternalSymbolsSource.php
13409 views
1
<?php
2
3
final 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('http://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('http://www.php.net/class.'.$name);
42
}
43
}
44
}
45
}
46
47
return $symbols;
48
}
49
}
50
51