1. php面向对象中对属性和方法定义的问题
对属性或方法的访问控制,是通过在前面添加关键字 public、protected 或 private 来实现的。由 public 所定义的类成员可以在任何地方被访问;由 protected 所定义的类成员则可以被其所在类的子类和父类访问(当然,该成员所在的类也可以访问);而由 private 定义的类成员则只能被其所在类访问。
2. php 对象中
php的面向对象思想编程中声明方法有三种不同的权限:public protect private。
public:权限是最大的,可以内部调用,实例调用等。
protected: 受保护类型,用于本类和继承类调用。
private: 私有类型,只有在本类中使用。
这些权限同样可以应用在变量声明中。
__set __get 都是php的魔术方法,主要是为了用来改变类的私有属性用的。
你觉得麻烦可以将private私有的变量改为公共public变量,这个要看需求和个人对面向对象的思考。
3. php 对对象的属性怎么操作
用箭头操作
classAction{
private$name=null;
functiongetName(){
return$this->name;
}
functionsetName($name){
$this->name=$name;
}
}
4. php 中的 -> 对象的方法或者属性 一般是干什么的用在什么地方
你这样用当然是不行的了,"->"符号是用在对象中的,符号左边是对象右边对象的属性或者方法
例:
<?php
//一个people类
//有两个属性和一个方法
class People{
public $name;
public $age;
function say($word)
{
echo $word;
}
}
//实例化一个对象
$a = new People();
//对象属性初始化
$a->name="zhangsan";
echo $a->name;
//调用 方法
$a->say("hello");
?>
5. php对象属性赋值
你这样使用时不符合oop的规范的,成员变量在最开始只能简单的定义,如果你要实现上述的代码应该这样:
class Test{
public $strtodate = 0;
public function __construct() {
$this->$strtodate = strtotime('2012-01-22');
}
}
$test = new Test();
echo $test->strtodate;
6. 在php中,将一个对象赋给了一个属性,那调这个属性的对象是那个,
你将一个属性的值定义成一个对象,那么你如果想调用含有这个对象的属性,那么你必须要实例化含有这个对象属性的对象
class A{} class B{ function __construct(){$this->a=new A()} } ,必须new B()
7. 谁能用比较通俗的语言解释一下php类中的构造函数,他的作用以及为什么会存在
从php5以后的版本,php的类就可以使用魔术方法了。
php规定以两个下划线(__)开头的方法都保留为魔术方法,所以建议大家函数名最好不用__开头,除非是为了重载已有的魔术方法。
PHP中的魔术方法有 :__construct,__destruct,__get, __set等
__get、__set这两个方法是为在类和他们的父类中没有声明的属性而设计的。
__get( $property ) 当调用一个未定义的属性时,此方法会被触发,传递的参数是被访问的属性名
__set( $property, $value ) 给一个未定义的属性赋值时,此方法会被触发,传递的参数是被设置的属性名和值
这里的没有声明包括当使用对象调用时,访问控制为proteced,private的属性(即没有权限访问的属性)。
在php语言中,类构造器有两种方法,一种是使用__construct,另一种是使用与类同名的方法。
__construct 构造方法,当一个对象创建时调用此方法,相对于PHP4使用此方法的好处是:可以使构造方法有一个独一无二的名称,无论它所在的类的名称是什么.这样你在改变类的名称时,就不需要改变构造方法的名称。