当前位置:首页 » 编程语言 » php初始化函数

php初始化函数

发布时间: 2022-07-30 04:58:04

‘壹’ php中构造函数与自定义函数区别

构造方法:用户创建对象时,系统自动调用的方法;
功能:初始化类中必备数据的;
PHP5实现方法:
1)方法名和类名相同的方法
2)PHP中设置的魔术方法(用户执行了某种操作后,系统自动调用的方法):
__construct();
注意:1】如果没有定义构造方法,那么系统会自动的创建一个空魔术构造方法;
2】如果PHP4中的构造方法和PHP5中的构造方法,同时存在,那么PHP5中的构造方法优先使用;普通的成员方法和构造方法的区别和联系:
1】普通的方法如果定义的名字和类名相同,那么就变成构造方法
2】如果构造方法中有参数,那么参数列表要和创建对象时,类名后的小括号参数类表完全一样;
3】普通的方法主要是为了完成某个功能,而构造方法主要是初始化数据
4】普通的方法的可以有返回值,但是构造方法从语法上可以有返回值,但是从意义上不能有返回值;

‘贰’ php 未调用函数 是否初始化

引入的函数在不执行时,是不会进行什么初始化的。只有在调用的时候,才会进行初始化。

除了定义在函数体外的全局变量,才需要在引入时进行初始化。

‘叁’ 【PHP】初始化是一定要用类的同名函数做构造函数吗

PHP中类的初始化有两种方式,一种是像你所说的同名函数做构造函数,另外一种则是定义__construct()(前面两个下划线_)做构造函数,这两者除了函数名称不一样外,其它没什么区别,都是用来初始化类的。但建议用后者,原因是如果使用了同名函数做构造函数,当类名发生改变,相应的构造函数名也要改变。而__construct被默认作为当前类的构造函数

‘肆’ php语言,初始化到底是用类的同名函数,还是用__construct()

2种方法都可以

‘伍’ 关于 php 类 继承 构造函数 初始化 问题

在进行 oop 封装处理的时候你的思路我不赞同的
因为很多类会引用 db(也就是数据库类),那么我就创建一个基类(base),然后在 base 中 引入 db 类,并创建 db 对象,设置自动初始化,这样通过基类在构建子类,通过子类构建对象,那么所有子类中的所有 成员函数就都可以使用 $this->db->方法(调用数据库类的一个方法)
例如:
class Base{
function __construct()

{
$db='';
require_once ('class/class_mysql.php');
$this->db = new class_mysql(DB_HOST, DB_USER,DB_PW, DB_NAME);
$this->db->set_mysql_charset(DB_CHARSET);
}

}

class control extends Base{
function __construct() {
parent::__construct (); //初始化父类
.......
}
}

‘陆’ PHP类中给成员属性初始化值为什么报错

PHP类中,若要初始化成员属性,那么成员属性的初始值必须是一个常数,如果不是常数(如变量),则会报错。

‘柒’ PHP 的 require函数

require()是php的内置函数,作用是引入或者包含外部php文件。

工作原理:当本身php文件被执行时,则外部文件的内容就将被包含进该自身php文件中;当包含的外部文件发生错误时,系统将抛出错误提示,并且停止php文件的执行。

注意:使用require时,一个文件存在错误的话,那么程序就会中断执行了,并显示致命错误。

比如cl.php,ts.php两个文件,ts.php要用到cl.php文件中的函数,需要在ts.php中引入或者包含cl.php即可.示例如下:

cl.php

<?php
functionshow(){
echo"cl.php文件中的show方法被调用了!";

}
?>

ts.php

<?php
require'cl.php';
show();
?>

运行结果:

‘捌’ php中的类有什么用和自定义函数有什么区别

请看PHP手册18章,里面的内容你看了就明白。

第18章类与对象(PHP4)
目录

继承
构造函数
范围解析操作符(::)
parent
序列化对象-会话中的对象
魔术函数__sleep和__wakeup
构造函数中的引用
对象的比较



类是变量与作用于这些变量的函数的集合。使用下面的语法定义一个类:

<?php
classCart{
var$items;//购物车中的物品

//将$num个$artnr物品加入购物车

functionadd_item($artnr,$num){
$this->items[$artnr]+=$num;
}

//将$num个$artnr物品从购物车中取出

functionremove_item($artnr,$num){
if($this->items[$artnr]>$num){
$this->items[$artnr]-=$num;
returntrue;
}elseif($this->items[$artnr]==$num){
unset($this->items[$artnr]);
returntrue;
}else{
returnfalse;
}
}
}
?>

上面的例子定义了一个Cart类,这个类由购物车中的商品构成的数组和两个用于从购物车中添加和删除商品的函数组成。

警告
不能将一个类的定义分割到多个文件中。也不能将一个类的定义分割到多个PHP块中,除非该分割是在一个方法声明内部。以下用法将不起作用:

<?php
classtest{
?>
<?php
functiontest(){
print'OK';
}
}
?>

但是以下用法是可以的:

<?php
classtest{
functiontest(){
?>
<?php
print'OK';
}
}
?>

以下警告仅用于PHP4。

小心
名称stdClass已经被Zend使用并保留。不能在PHP代码中定义名为stdClass的类。

小心
函数名__sleep和__wakeup在PHP类中是魔术函数。除非想要与之联系的魔术功能,否则在任何类中都不能以此命名函数。

小心
PHP将所有以__开头的函数名保留为魔术函数。除非想要使用一些见于文档中的魔术功能,否则建议不要在PHP中将函数名以__开头。

在PHP4中,var变量的值只能初始化为常量。用非常量值初始化变量,需要一个初始化函数,该函数在对象被创建时自动被调用。这样一个函数被称之为构造函数(见下面)。

<?php
/*PHP4中不能这样用*/
classCart{
var$todays_date=date("Y-m-d");
var$name=$firstname;
var$owner='Fred'.'Jones';
/*不过包含有常量的数组可以*/
var$items=array("VCR","TV");
}

/*应该这样进行*/
classCart{
var$todays_date;
var$name;
var$owner;
var$items=array("VCR","TV");
functionCart(){
$this->todays_date=date("Y-m-d");
$this->name=$GLOBALS['firstname'];
/*etc...*/
}
}
?>
类也是一种类型,就是说,它们是实际变量的蓝图。必须用new运算符来创建相应类型的变量。

<?php
$cart=newCart;
$cart->add_item("10",1);

$another_cart=newCart;
$another_cart->add_item("0815",3);
?>
上述代码创建了两个Cart类的对象$cart和$another_cart,对象$cart的方法add_item()被调用时,添加了1件10号商品。对于对象$another_cart,3件0815号商品被添加到购物车中。

$cart和$another_cart都有方法add_item(),remove_item()和一个items变量。它们都是明显的函数和变量。可以把它们当作文件系统中的某些类似目录的东西来考虑。在文件系统中,可以拥有两个不同的README.TXT文件,只要不在相同的目录中。正如从为了根目录访问每个文件需要输入该文件的完整的路径名一样,必须指定需要调用的函数的完整名称:在PHP术语中,根目录将是全局名字空间,路径名符号将是->。因而,名称$cart->items和$another_cart->items命名了两个不同的变量。注意变量名为$cart->items,不是$cart->$items,那是因为在PHP中一个变量名只有一个单独的美元符号。

<?php
//正确,只有一个$
$cart->items=array("10"=>1);

//不正确,因为$cart->$items变成了$cart->""
$cart->$items=array("10"=>1);

//正确,但可能不是想要的结果:
//$cart->$myvar变成了$cart->items
$myvar='items';
$cart->$myvar=array("10"=>1);
?>
在定义类的时候,无法得知将使什么名字的对象来访问:在编写Cart类时,并不知道之后对象的名称将会命名为$cart或者$another_cart。因而你不能在类中使用$cart->items。然而为了类定义的内部访问自身的函数和变量,可以使用伪变量$this来达到这个目的。$this变量可以理解为“我自己的”或者“当前对象”。因而'$this->items[$artnr]+=$num'可以理解为“我自己的物品数组的$artnr计数器加$num”或者“在当前对象的物品数组的$artnr计数器加$num”。

注意:伪变量$this通常未定义,如果其所在的方法是被静态调用的话。但这不是个严格规定:如果一个方法被从另一个对象内静态调用的话,则$this会被定义。此时$this的值是那个发出调用的对象。用下例演示:

<?php
classA
{
functionfoo()
{
if(isset($this)){
echo'$thisisdefined(';
echoget_class($this);
echo")\n";
}else{
echo"\$thisisnotdefined.\n";
}
}
}

classB
{
functionbar()
{
A::foo();
}
}

$a=newA();
$a->foo();
A::foo();
$b=newB();
$b->bar();
B::bar();
?>
上例将输出:

$thisisdefined(a)
$thisisnotdefined.
$thisisdefined(b)
$thisisnotdefined.注意:有一些不错的函数用来处理类和对象。应该关注一下类/对象函数。

‘玖’ php是先产生对象再调用构造函数初始化的么

可以这么理解,在你实例化类的时候,自动执行构造函数。

热点内容
c语言制作辅助 发布:2025-01-24 09:46:58 浏览:42
云服务器历史演进顺序 发布:2025-01-24 09:36:58 浏览:740
研究ftp的意义 发布:2025-01-24 09:31:22 浏览:254
联想安卓升级包在哪里下载 发布:2025-01-24 09:15:20 浏览:592
认票的算法 发布:2025-01-24 09:00:45 浏览:928
android调用打印机 发布:2025-01-24 09:00:32 浏览:809
网易版我的世界服务器如何 发布:2025-01-24 08:55:47 浏览:969
编译器鼻祖 发布:2025-01-24 08:54:11 浏览:845
如何用安卓编译项目 发布:2025-01-24 08:30:46 浏览:864
计算机同时输出和存储设备的区别 发布:2025-01-24 08:29:21 浏览:582