php魔术方法__tostring的应用

Posted ghostwu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php魔术方法__tostring的应用相关的知识,希望对你有一定的参考价值。

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

 

以上是关于php魔术方法__tostring的应用的主要内容,如果未能解决你的问题,请参考以下文章

PHP常用魔术方法(__toString魔术方法)

php PHP魔术方法__toString()

PHP魔术方法之__toString()方法

php面向对象之__toString()

PHP __toString()魔术方法不返回字符串(SOLUTION)

php类知识---魔术方法__toString,__call,__debugInfo