A. php 对象的成员属性名称是数字,如何才能访问
数字也是可以访问的,按照你这个例子来说,可以这样:
$obj->{0}
B. php 对对象的属性怎么操作
用箭头操作
classAction{
private$name=null;
functiongetName(){
return$this->name;
}
functionsetName($name){
$this->name=$name;
}
}
C. php中的类、对象、属性、方法,能不能这样理解
你的理解是对的。类就是指猛纯毁一类人、事、物。对象就是类里面具体都某个个体,所以裤迟称枝备为实例化一个对象。属性就是这个对象所拥有的特性,方法就是该对象能够做的事。所以你的理解是正确的。
D. php 的public作用
从PHP5.0版本开始,对象声明时需要声明对象属性和方法的可见性,public关键字表示属性或方法是公开可见的。
在PHP5.0之前未支持对象属性和方法的可见性定义,默认所有的属性和方法都是公开可见的,如以下的对象声明:
//例1
classObj{
var$name='Obj';
functiongetName(){
return$this->name;
}
}
而PHP5开始推荐写法为:
//例2
classObj{
protected$name='Obj';
publicfunctiongetName(){
return$this->name;
}
}
对于例1来说,实际上可以直接访问name属性,从而绕过getName方法,如
$obj=newObj();
echo$obj->name;
而对于例2来说,由于$name属性是protected(受保护的),因此必须使用getName方法才能得到$name属性的值。
同时这也是面向对象语言通用的一种声明方式。
public: 公开可见
protected: 对象内部可见 (该对象的子对象同样可以访问)
private: 对象自身内部可见 (不包含该对象的子对象,或者说private属性和方法不会被继承)
E. PHP中面向对象的类中,属性都允许哪些数据类型
对属性或方法的访问控制,是通过在前面添加关键字 public、protected 或 private 来实现的。由 public 所定义的类成员可以在任何地方被访问;由 protected 所定义的类成员则可以被其所在类的子类和父类访问(当然,该成员所在的类也可以访问);而由 private 定义的类成员则只能被其所在类访问。
F. PHP数组中可否存放对象如果可以,那么在smarty的模板中应当如何获取对象的属性值
PHP的数组是支持保存对象的实例的,然后你的错误提示中也能看出是用了数组的方式来访问了一个对象。
建议你不要用对象的形式,而全部都用数组。可以用json函数来转换
$user_array=json_decode(json_encode($user_array),true);
这样一来$user_array里面就全部都是数组,其中原先对象的部分被一个包含了其所有成员属性的数组替代。
G. php访问对象
$data = $m_request_data->data; #访问对象
这一句要注意了。你这里只是临时定义个变量。要想在类中全部能用它,
class A{
可以在类中先声明它
private $data;
或者定义一个静态方法
public static $data;
然后构造方法最后一句变为
public function __construct() {
…………
$this->data= $m_request_data->data; #访问对象
//静态方法是self::data = $m_request_data->data;
}
好了这里
function data(){
print_r($this->data);//直接用,打印还是取值$this->data->value();随你~~
//静态的是print_r(self::data);
}
H. 说说php面向对象编程时static,public,private,protected 各有什么意义
staticpublic与publicstatic是等价的,这两者只是两个修饰符的顺序不同。根据oracle.com教材中第八章的描述,如果两个或两个以上的(不同的)字段修饰符出现在字段声明,它们出现的顺序需与FieldModifier一致,这只是习惯,但不是必需的。部分修饰符说明:public是访问权限修饰符,用于控制外界对类内部成员的访问,声明为public的对象成员是完全共有的,外界可以随意访问,除此之外还有private,protected和默认。static控制类成员变化的修饰符。static是静态成员修饰符,其修饰的静态变量脱离具体对象独立存在,在内存中之后一份拷贝,所有的对象都公用这一个存储空间,所以对static修饰的静态变量进行的修改对该类的所有对象都起作用。static修饰的静态函数代表所有对象的统一操作,只能调用静态变量。static是针对面向对象中的“多态”而提出来的,static修饰的静态成员不存在多态性。附:FieldModifier顺序
I. php对象访问不存在的类属性
使用get()和set()而不使用public的成员变量,是因为我们设计类的时候要遵循这样的原则:
提供类的人要尽量将类中有什么隐藏起来,只告诉使用者你能做什么
使用类的人不关心你的类中有什么,只关心类提供了什么功能
所以设计类的时候要尽量不提供public的成员变量,最好一个都没有,只提供接口
这条原则其实不仅是代码规范的问题,放到工作中,这就是多项目组或多部门之间合作的准则
这条原则也绝对不是某个独自编码的程序狼一拍脑袋就想出来,这是经历过有组织开发过工作的程序猿才能设计出来的。
————————————————————————————————————————————————————————————
这个问题其实很简单,比如
setAge(int age){
if(age<1||age>120)
throw new Exception(" 你输入的年龄不合法");
}else{
this.age=age;
}
这个是public变量做不到的,安全是其中一个原因,另外楼主你要是学过Hiberante和Spring的话,就会知道
一些类的变量,即使是public的,也必须写上set方法,否则就出错,框架设计的时候就这么要求的
所以别人都这么做的时候,你这么做只会有好处而不会有坏处,这就是标准
J. php怎么访问对象中的private
私有属性方法在对象外不能访问,在对象内可以蔽塌访问,那么你可以写一个共有public的方法,在方法里对对象里巧歼的私有属性宏宽圆方法采取调用就可以了。所谓私有就是避免对象外的乱改,加个方法起限制