php魔术方法__tostring的应用
程序员文章站
2024-01-09 19:51:24
当echo一个对象的时候,会报错误 Object of class Person could not be converted to string 我们可以通过魔术方法__tostring() 把对象转成字符串 继续改造php静态变量与方法与phar的使用 ghostconfig.php ghost ......
当echo一个对象的时候,会报错误
Object of class Person could not be converted to string
我们可以通过魔术方法__tostring() 把对象转成字符串
#!/usr/bin/php <?php class Person{ public $name = 'ghostwu'; public $age = 20; function __toString(){ return json_encode( $this ); } } echo new Person(); ?>
ghostconfig.php
<?php class ghostconfig{ public $projName = ''; public $author = ''; function __tostring(){ return json_encode( $this ); } } ?>
ghostinit.php
require( "ghostconfig.php" ); class ghostinit{ static $v = 'ghost version is 1.1'; static function init(){ $config = new ghostconfig(); echo "pls input project name?" . PHP_EOL; $config->projName = fgets( STDIN ); echo "pls input author?" . PHP_EOL; $config->author = fgets( STDIN ); echo "您输入的项目信息如下:" . PHP_EOL; echo $config; } static function getConfig( $conf ){ $std = new stdClass(); foreach( $conf as $k => $v ){ $std->$k = $v; } return $std; } function __tostring(){ return json_encode( $this ); } 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'; } }
php7可以使用匿名类简化