
正文
php数据构造器 php中的五种数据结构
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
请问PHP构造函数的含义
php的两大oop使用型函数:构造函数(__construct)和析构函数(__destruct );
构造函数:当在某一页面写了众多函数,其中就包括构造函数,当你调用其中任一函数时,都将在调用此函数前先调用构造函数,如:你把链接数据库代码写到构造函数里面,然后在使用增删改查时,就不用再写连接s数据库语句了,因为有构造函数在,你就只用写增删改查类sql语句就可以了。
析构函数:和构造函数相反,在同一页面内,有众多函数,其中有析构函数,当你调用了某一函数之后,会自动执行析构函数,比如说你的增删改查用完了,是不是要关闭数据库连接来释放内存?析构函数就是这样用的。
相关问答
Q1: PHP构造器是不是不能重载? - PHP进阶讨论
原帖由 于 2008-9-28 09:53 发表 [i][/url]重载:(overload)1.在同一个类中php数据构造器;(不单单是类中,普通函数也包括)2.方法名相同;3.参数个数或者参数类型不同(如果参数类型和个数相同,但是类型顺序不同也是重载php数据构造器!)4.与返回类型无关劳伦斯兄弟说得对,PH ... [/b]龙兄说对了关键的概念没弄清楚吧,名词与用途没有对上号。1、弄清概念:重载(overload)、重写(override)、继承(extends)2、PHP是弱类型,重载根据变量类型和个数不同而进行,所以只能模拟重载。3、PHP支持在继承类中重写(覆盖)方法。4、构造函数(_construct)可以被继承。
Q2: php:构造函数可以返回值吗
php:构造函数可以返回值吗?
1234567
class a{ function construct() { return 'abc'; }}
可以吗?
貌似是不行的吧、、、忘记了,没怎么主意这个
你可以这么写,但new后得到的仍是这个类的对象
你为什么要这么用呢??
你想让有个函数返回abc 只需要再写一个 调用一次就行了呗
不可以!
构造函数的功能主要用于在类的对象创建时定义初始化的状态.它没有返回值,也不能用void来修饰.
构造函数都是用于初始化数据的 数据只能进不能出
靠,这种问题还要问,实在不懂写个测试例子看看不就完
想在构造函数中得到或返回一些值是不行的,不过写一个与类名同名的函数可以实现此目地。
1234567891011121314
class abc{ public $var1; public $var2; private function abc($var1,$var2) { $this-var1=$var1; $this-var2=$var2; }}............$abc=new abc(123,'abc');var_dump($abc);
不过写一个与类名同名的函数可以实现此目地
神马意思???
与类名同名的函数不就是构造函数吗??
你见过 new一个对象返回的是其它类型的值吧??new是返回一个对象的,所以,构造函数不论你手动返回什么,都是一个object。
Q3: 谁能用比较通俗的语言解释一下php类中的构造函数,他的作用以及为什么会存在?
从php5以后php数据构造器的版本php数据构造器,php的类就可以使用魔术方法php数据构造器了。
php规定以两个下划线(__)开头的方法都保留为魔术方法php数据构造器,所以建议大家函数名最好不用__开头,除非是为了重载已有的魔术方法。
PHP中的魔术方法有 :__construct,__destruct,__get, __set等
__get、__set 这两个方法是为在类和他们的父类中没有声明的属性而设计的。
__get( $property ) 当调用一个未定义的属性时,此方法会被触发,传递的参数是被访问的属性名
__set( $property, $value ) 给一个未定义的属性赋值时,此方法会被触发,传递的参数是被设置的属性名和值
这里的没有声明包括当使用对象调用时,访问控制为proteced,private的属性(即没有权限访问的属性)。
在php语言中,类构造器有两种方法,一种是使用__construct,另一种是使用与类同名的方法。
__construct 构造方法,当一个对象创建时调用此方法,相对于PHP4使用此方法的好处是:可以使构造方法有一个独一无二的名称,无论它所在的类的名称是什么.这样你在改变类的名称时,就不需要改变构造方法的名称。
Q4: PHP中面向对象中构造器的写法是什么样的
有两种写法:
class MyClass {
public function __construct () {
// 实例化时自动执行
}
}
class MyClass2 {
public function MyClass2 () {
// 实例化时被执行
}
}
如果两种情况同时出现,php 会优先执行 __construct()。
Q5: php问题,新手,麻烦老手解答下
$ok = new Person("刘化超", "男");
$ok1 = new student('123');
你上面的代码是分别建立了两个不同类的实例,student 与 person,并不是一样的东西。
虽然student继承自person,但你并没有在构造器__construct 中对 $name 和 $xb 成员进行初始化,而在 Person 中也没有在构造器中设置缺省数据。
由于在php中对于重载的支持不太好,因此,可以修改student类的构造器,示例代码如下:
function __construct($number)
{
$this-xh = $number;
$this-name = '无名'; //新增
$this-xb = '未知性别'; //新增
}
运行结果:
无名
未知性别
123
关于php数据构造器和php中的五种数据结构的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







