类中嵌套类,又嵌套数组和类,整糊涂了,求解
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了类中嵌套类,又嵌套数组和类,整糊涂了,求解,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2793字,纯文字阅读大概需要4分钟。
内容图文
![类中嵌套类,又嵌套数组和类,整糊涂了,求解](/upload/InfoBanner/zyjiaocheng/224/b04ee4f834e94a69a74f727c8c5847b8.jpg)
本帖最后由 jerryleeee 于 2013-10-25 03:26:59 编辑
分享到:
class Editor
{
var $Error = '' ;
var $Pages;
function vol()
{
$Pages = array();
$this->Pages[] = new page;
}
}
class Page
{
var $Id = '';
var $BackImage;
function vol()
{
$BackImage = array();
$this->$BackImage[] = new Decorator;
}
}
class Decorator
{
var $Ext = '';
}
_________________________________________________________
//我在使用这个类的时候
$Editor = new Editor;
$Editor->vol();
$Editor->Pages[0]->vol(); //对象定义完成?我只初始化了Pages[0]下的class Decorator对象,
为什么下面我可以直接使用page[2]和所有page数组其他元素中的class Decorator ,
而不需要我$Editor->Pages[2]->vol()呢?
$Editor->Pages[0]->BackImage[0]->Ext = 'str' ;
$Editor->Pages[2]->BackImage[2]->Ext = 'str2' ;
$Editor->Pages[5]->BackImage[4]->Ext = 'str6' ; //这样使用没有报错
------解决方案--------------------
class Editor
{
var $Error = '' ;
var $Pages;
function vol()
{
$Pages = array();
$this->Pages[] = new page;
}
}
class Page
{
var $Id = '';
var $BackImage;
function vol()
{
$BackImage = array();
// $this->$BackImage[] = new Decorator; //Fatal error: Cannot use [] for reading
$this->BackImage[] = new Decorator; //只能这样写,因为 $BackImage 是数组
}
}
class Decorator
{
var $Ext = '';
}
$Editor = new Editor;
$Editor->vol();
$Editor->Pages[0]->vol();
$Editor->Pages[0]->BackImage[0]->Ext = 'str' ;
$Editor->Pages[2]->BackImage[2]->Ext = 'str2'; //Warning: Creating default object from empty value
连语法检查都通不过!
------解决方案--------------------
[color=#993300]感觉找到原因了:[/color]
//我在使用这个类的时候
$Editor = new Editor;
$Editor->vol();
$Editor->Pages[0]->vol(); //对象定义完成?我只初始化了Pages[0]下的class Decorator对象,
//为什么下面我可以直接使用page[2]和所有page数组其他元素中的class Decorator ,
//而不需要我$Editor->Pages[2]->vol()呢?
//$Editor->name = "xlc";
echo "
";
$Editor->Pages[10]->BackImage[10]->Name = 'str' ;
echo $Editor->Pages[10]->BackImage[10]->Name;
var_dump($Editor);
输出内容为:
strobject(Editor)#1 (2) { ["Error"]=> string(0) "" ["Pages"]=> array(2) { [0]=> object(Page)#2 (2) { ["Id"]=> string(0) "" ["BackImage"]=> array(1) { [0]=> object(Decorator)#3 (1) { ["Ext"]=> string(0) "" } } }
[10]=> object(stdClass)#4 (1) { ["BackImage"]=> array(1) { [10]=> object(stdClass)#5 (1) { ["Name"]=> string(3) "str" } } } } }
请查数据Pages[10]的键值,其实他创建的是一人stdClass类页并不是Page类的一个实例,这个应该是php5特性吧。
刚开始以为是魔术方法里面问题,但后来确定了一下,不是的。
------解决方案--------------------
没有报错应该是你的php设置了报告级别
{
$BackImage = array(1,2,3,4);
$this->BackImage[] = new Decorator;
//这里增加两句或者可帮助你理解
print_r($BackImage);
print_r($this->BackImage);
}
你需要了解一下类的属性和类内出现的一般变量的异同
建议你应该去学习 类的继承,能理清并简化你上面的思路,减少对象链、方法链的使用
内容总结
以上是互联网集市为您收集整理的类中嵌套类,又嵌套数组和类,整糊涂了,求解全部内容,希望文章能够帮你解决类中嵌套类,又嵌套数组和类,整糊涂了,求解所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。