This section uses classes and static variables to transform the previous example: php generates configuration files based on command line parameters
ghostinit.php:
<?php class ghostinit{ static $version = 'ghost version is 1.1'; static $projName = ''; static $author = 'ghostwu'; static function init(){ echo "pls input project name?" . PHP_EOL; self::$projName = fgets( STDIN ); echo "pls input author?" . PHP_EOL; self::$author = fgets( STDIN ); echo "The project information you entered is as follows:" . PHP_EOL ; echo self:: $projName . PHP_EOL ; echo self:: $author . PHP_EOL ; } static function make(){ $pchar=new Phar("ghost.phar"); $pchar->buildFromDirectory(dirname(__FILE__)); $pchar->setStub($pchar->createDefaultStub('ghost')); $pchar->compressFiles(Phar::GZ); } } ?>
ghost:
#!/usr/bin/php <?php require "ghostinit.php"; $result = ''; if( $argc >= 2 ) { $argv[1] == '-v' && $result = ghostinit::$version; $argv[1] == 'make' && ghostinit::make(); $argv[1] == 'init' && ghostinit::init(); } echo $result . PHP_EOL;
Results of the:
ghostwu@dev:~/php/php1/3$ ls done ghost ghostinit.php ghostwu@dev:~/php/php1/3$ ./ghost init pls input project name? test pls input author? ghostwu The project information you entered is as follows : test ghostwu ghostwu@dev:~/php/php1/3$ ls done ghost ghostinit.php ghostwu@dev:~/php/php1/3$ ./ghost make ghostwu @ dev : ~ / php / php1 / 3 $ ls done ghost ghostinit.php ghost. phar ghostwu @ dev : ~ / php / php1 / 3 $ ./ghost - v ghost version is 1.1 ghostwu@dev:~/php/php1/3$
callstatic continues to transform:
ghostinit.php:
<?php class ghostinit{ static $v = 'ghost version is 1.1'; static $projName = ''; static $author = 'ghostwu'; static function init(){ echo "pls input project name?" . PHP_EOL; self::$projName = fgets( STDIN ); echo "pls input author?" . PHP_EOL; self::$author = fgets( STDIN ); echo "The project information you entered is as follows:" . PHP_EOL ; echo self:: $projName . PHP_EOL ; echo self:: $author . PHP_EOL ; } static function make(){ $pchar=new Phar("ghost.phar"); $pchar->buildFromDirectory(dirname(__FILE__)); $pchar->setStub($pchar->createDefaultStub('ghost')); $pchar->compressFiles(Phar::GZ); } static function __callstatic( $m, $args ){ echo 'error function'; } } ?>
ghost:
#!/usr/bin/php <?php require "ghostinit.php"; $result = ''; if( $argc >= 2 ) { $p = $argv[1]; if( substr( $p, 0, 1 ) == '-' ) { $p = substr( $p, 1 ); $result = isset( ghostinit::$$p ) ? ghostinit::$$p : 'error'; }else { $result = ghostinit::$p(); } } echo $result . PHP_EOL;