L'intérêt du script est très simple: générer un fichier de syntaxe (.stx) adapté à votre configuration. Les fichiers que l'on peut trouver sur le web sont rarement complets, et quand ils le sont ils sont gigantesques. À la place, je vous propose d'en générer un qui collera parfaitement à votre version de PHP et aux extensions installées. Sauvegardez ce script où ça vous chante, exécutez-le via votre browser préféré puis remplacez votre ancien php.stx avec celui que vous venez de downloader.
Code : Tout sélectionner
<?php
@session_start();
if (FALSE)
{
$GLOBALS;$_GET;$_POST;$_REQUEST;$_COOKIE;$_ENV;$_SERVER;$_SESSION;
}
$global_vars = array_keys(get_defined_vars());
$classes = get_declared_classes();
$file = '#TITLE=PHP ' . PHP_VERSION . "\n";
$file .= <<<HEREDOC
#CASE=n
#DELIMITER=,(){}[]-+*%/="`'~!&|<>?:;.#@<<<
#QUOTATION1='
#QUOTATION2="
#CONTINUE_QUOTE=n
#LINECOMMENT=//
#LINECOMMENT2=#
#COMMENTON=/*
#COMMENTOFF=*/
#COMMENTON2=
#COMMENTOFF2=
#ESCAPE=\
#PREFIX1=
#PREFIX2=
#PREFIX3=$
#PREFIX4=
#PREFIX5=
#SUFFIX1=
#SUFFIX2=
#SUFFIX3=
#SUFFIX4=
#SUFFIX5=
#HTML_EMBEDDED=y
#SCRIPT_BEGIN=<?
#SCRIPT_END=?>
#SKIP_QUOTE=y
#NUMBER_PATTERN=cpp
#keyword=Reserved words
php
$
@
int
integer
string
double
float
real
bool
boolean
array
object
and
or
xor
__FILE__
exception
__LINE__
as
break
case
class
const
continue
declare
default
die
do
echo
else
elseif
empty
enddeclare
endfor
endforeach
endif
endswitch
endwhile
eval
exit
extends
for
foreach
function
global
if
include
include_once
isset
list
new
print
require
require_once
return
static
switch
unset
use
var
while
__FUNCTION__
__CLASS__
__METHOD__
final
php_user_filter
interface
implements
extends
public
private
protected
abstract
clone
try
catch
throw
#keyword=Built-in functions
__autoload
__call
__clone
__construct
__destruct
__get
__set
HEREDOC;
// Fuck the highlighter <?php
$methods = array();
foreach ($classes as $class)
{
$class_methods = get_class_methods($class);
sort($class_methods);
$file .= "\n;{$class}\n";
foreach ($class_methods as $method)
{
if (substr($method, 0, 2) == '__' || isset($methods[$method]))
{
continue;
}
$methods[$method] = 0;
$file .= $method . "\n";
}
}
unset($methods);
$file .= "\n;PHP functions";
$functions = get_defined_functions();
sort($functions['internal']);
foreach ($functions['internal'] as &$function)
{
$file .= "\n" . $function;
}
$file .= "\n\n#keyword=Predefined Variables";
sort($global_vars);
foreach ($global_vars as $varname)
{
$file .= "\n" . $varname;
}
$file .= "\n\n#keyword=Predefined Classes\nself\nparent\n";
$file .= implode("\n", $classes) . "\n";
$file .= "\n;Predefined Interfaces\n";
$file .= implode("\n", get_declared_interfaces()) . "\n";
$file .= "\n\n#keyword=Predefined Constants\n";
$constants = array_keys(get_defined_constants());
sort($constants);
$file .= implode("\n", $constants);
header('Content-Type: text/plain');
header('Content-Length: ' . strlen($file));
header('Content-Disposition: attachment; filename=php.stx');
echo $file;
?>