欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

php魔术方法__tostring的应用

程序员文章站 2022-03-31 13:23:33
当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();
?>

 继续改造php静态变量与方法与phar的使用

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可以使用匿名类简化