在PHP中声明对象和打印字符串

时间:2015-02-15 01:54:28

标签: php html class

捕获致命错误:第19行的/Applications/XAMPP/xamppfiles/htdocs/wisd_activity04c.php中无法将类HelloWorldClass的对象转换为字符串

该程序应该输出 1." Hello World!"红色/ 40px字体 2." Hello World!"绿色/ 20px字体和带下划线

<?php 
    echo '60-334 ACTIVITY 4 PART 3/3<br><br>';

    class HelloWorldClass
    { 
        public $font_size;
        public $font_colour;
        public $hello_string;

        function __construct($size, $colour)
        { 
            $this->font_size = $size;
            $this->font_colour = $colour;
            $this->hello_string = "Hello World!";
        } 

        public function custom_show() 
        { 
            echo "<font color=\"$this.font_colour\" size=\"$this.font_size\">$this.hello_string</font>";
        }  
    } 

    class Sub_HelloWorldClass extends HelloWorldClass 
    { 
        function __construct($size, $colour)
        {
            parent::__contruct($font, $colour);
        }

        public function custom_show() 
        { 
            echo "<u><font color=\"$this.font_colour\" size=\"$this.font_size\">$this.hello_string</font></u>";
        } 
    } 

    $object = new HelloWorldClass('40px', 'red');
    $object->custom_show();

    $object = new Sub_HelloWorldClass('20px', 'green');
    $object->custom_show();
?>

1 个答案:

答案 0 :(得分:1)

这个答案来自您的第一次修订:

https://stackoverflow.com/revisions/28522294/1

您的代码中有一些错误:

1。缺少分号

$this->hello_string = "Hello World!"  //<- Missing semicolon at the end

2。错误访问类属性

echo "<font color=\"$this.font_colour\" size=\"$this.font_size\">$this.hello_string</font>";
//...
echo "<u><font color=\"$this.font_colour\" size=\"$this.font_size\">$this.hello_string</font></u>";

我建议你将属性与字符串连接起来。 How to concatenate?您必须使用连接运算符:.并使用引号确定字符串。

除此之外,您还必须使用运算符访问类属性:->。有关访问类属性的详细信息,请参阅手册:http://php.net/manual/en/language.oop5.properties.php

所以你的代码应该是这样的:

echo "<font color=\"" . $this->font_colour . "\" size=\"" . $this->font_size . "\">" . $this->hello_string . "</font>";
//...                 ^ See here concatenation                   ^^ See here access of class property
echo "<u><font color=\"" . $this->font_colour . "\" size=\"" . $this->font_size . "\">" . $this->hello_string . "</font></u>";

3。带空格的班级名称

您不能拥有带空格的班级名称:

class Sub_ HelloWorldClass extends HelloWorldClass  //So change just remove the space

有关类名的更多信息,请参阅手册:http://php.net/manual/en/language.oop5.basic.php

从那里引用:

  

类名可以是任何有效标签,前提是它不是PHP保留字。有效的类名称以字母或下划线开头,后跟任意数量的字母,数字或下划线。作为正则表达式,它将表示为: ^ [a-zA-Z_ \ x7f- \ xff] [a-zA-Z0-9_ \ x7f- \ xff] * $

4。失踪的&#39;在__construct()

parent::__contruct($font, $colour);  //Missed 's' in construct

5。使用了错误的变量

function __construct($size, $colour)
{
    parent::__construct($font, $colour);  //Change '$font' to '$size'
}

旁注:

仅在暂存时打开文件顶部的错误报告:

<?php
    ini_set("display_errors", 1);
    error_reporting(E_ALL);
?>

这将为您提供有用的错误消息,以便您更好地显示错误!