这是我的第一个OOP计划,所以请不要生我的气啊:) 问题是我遇到以下错误:
无法在第47行的D:\ xampp \ htdocs \ php \ OOP \ coder_class.php中访问受保护的属性Code :: $ text
程序只是编码一个字符串并对其进行解码。我不确定这是否是学习OOP的好例子。
<?php
class Code
{
// eingabestring
protected $text;
public function setText($string)
{
$this->text = $string;
}
public function getText()
{
echo $this->text;
}
}
class Coder extends Code
{
//Map for the coder
private $map = array(
'/a/' => '1',
'/e/' => '2',
'/i/' => '3',
'/o/' => '4',
'/u/' => '5');
// codes the uncoded string
public function coder()
{
return preg_replace(array_keys($this->map), $this->map, parent::text);
}
}
class Decoder extends Code
{
//Map for the decoder
private $map = array(
'/1/' => 'a',
'/2/' => 'e',
'/3/' => 'i',
'/4/' => 'o',
'/5/' => 'u');
// decodes the coded string
public function decoder()
{
return preg_replace(array_keys($this->map), $this->map, parent::text);
}
}
$text = new code();
$text -> setText("ImaText");
$text -> coder();
$text -> getText();
&GT;
有些人可以帮我解决这个问题。我是PHP的新手。
答案 0 :(得分:2)
相关代码:
class Code
{
protected $text;
}
$text = new code();
echo $text->text;
属性不公开,因此错误。它像宣传的那样工作。
答案 1 :(得分:2)
使用:
protected $text;
和
echo $text->text;
您收到错误的原因。 protected
表示只有Code
类的后代才能访问该属性,即。 Coder
和Decoder
。如果您想通过$text->text
访问它,则必须是public
。或者,只需编写getText()
方法;你已经写过了二传手。
附注:public
,private
和protected
关键字实际上无与安全性有关。它们通常用于强制执行数据/代码/对象完整性。