A. php中如何定义对象类型数组
应该是存到对象属性中吧
你把
public function setDepartment($department)
{
$this->department=$department;
}
改成
public function setDepartment($department)
{
$this->department[]=$department;
}
即可
private $department;
要不要改成
private $department=array();
其实无所谓
B. PHP自定义函数时怎么指定参数类型
class User{
public $name;
public $password;
function __construct($name,$password){
$this->name=$name;
$this->password=$password;
}
}
//参数可以指定对象类型
function f1(User $user){
echo $user->name,”,”,$user->password;
}
//参数可以指定数组类型
function f2(array $arr){}
//参数不可以指定基本类型,下面一句会出错
function f3(string $s){}
C. php如何自定义类库
说白了,我就是把一些经常使用到的函数,方法写在一起,以后可以直接引用。
既然是库,就把安然规则,把库名,规范排好。
若是存在在多个文件夹里,只能用包含方式。
若不包含,无法实现:你设想一番,php如何能找到你的方法,类,在哪里??php去哪里寻找啊?你找不到啊?
只能包含在一起。
如何做过规范,有序的包含,建议你下载开源的(discuz.dedecms)阅读一番即可。养成良好的方法。
D. PHP自定义函数和自定义变量
就是自己定义一个函数,方便日后使用,特别是一些比较复杂,但又常用的功能
举个简单的例子,
我经常要计算两个日期的时间差,
我可以这样写
$date1 = "2008-08-08"; //例如我要计算奥运会开幕时间
$date2 = date("Y-m-d"); //今天的日期
$date3 = abs((strtotime($date1) - strtotime($date2))/86400);
$date3就是两天相隔的日期
但这样太麻烦了,每次都要写这么多,于是我就自定义一个函数
例如
function shuTime($date1,$date2){
$date3 = abs((strtotime($date1) - strtotime($date2))/86400);
return $date3;
}
这样,我就不用每次使用该功能时都写这么多,
只需要写
echo shuTime("2008-08-08",date("Y-m-d"));
直接输入两个日期就可以了..
自定义变量也是这个道理,把一些比较长又常用的变量自定义为常量.
E. php 定义 double 或 float 型 变量
不需要特别定义,只需要这样==》$a=0.00;感觉没什么double和float之分,你后面的计算赋予它的值有小数它自然就是double或float,没有小数就是int,如果要规定小数点后留几位可以用round函数
F. 如何在thinkphp里面自定义类
G. 编写一个PHP类时,如何直接定义一个类变量
classtest{
public$ex;
publicfunctiongetNum(){}
publicfunction__construct(){
$this->ex=newExample();
}
}
H. 如何在PHP中定义一个类
当你声明一个类,你需要列出对象应有的所有变量和所有函数?被称为属性和方法图1中显示了一个类的构成. 注意在大括号({})内你只能声明变量或者函数. 图2中显示了如何在一个类中定义三个属性和两个方法.
以下为引用的内容:
class Name extends Another Class
{
Access Variable Declaration
Access Function Declaration
}
name = $name;
$this->password = $password;
$this->lastLogin = time();
$this->accesses++;
}
// 获取最后访问的时间
function getLastLogin()
{
return(date("M d Y", $this->lastLogin));
}
}
//创建一个对象的实例
$user = new User("Leon", "sdf123");
//获取最后访问的时间
print($user->getLastLogin() ."\n");
//打印用户名
print("$user->name\n");
?>
当你声明属性,你不需要指明数据类型. 变量可能是整型,字符串或者是另一个对象,这取决于实际情况.在声明属性时增加注释是一个好主意,标记上属性的含义和数据类型.
当你声明一个方法,你所做的和在类外部定义一个函数是一样的. 方法和属性都有各自的命名空间. 这意味着你可以安全地建立一个与类外部函数同名的方法,两者不会冲突. 例如,一个类中可以定义一个名为date()的方法. 但是你不能将一个方法命名为PHP的关键字,如for或者while.
类方法可能包含PHP中所谓的type hint. Type hint 是另一个传递参数给方法的类的名字. 如果你的脚本调用方法并传递一个不是类的实例的变量,PHP将产生一个”致命(fatal)错误” . 你可能没有给其它类型给出type hint,就像整型,字符串,或者布尔值. 在书写的时候, type hint是否应当包含数组类型仍存在争议.
Type hint是测试函数参数或者运算符的实例的数据类型的捷径. 你可能总是返回这个方法. 确认你强制让一个参数必须是哪种数据类型,如整型. 图3 确保编译类只产生Widget的实例
以下为引用的内容:
<?php
//组件
class Widget
{
public $name='none';
public $created=FALSE;
}
//装配器
class Assembler
{
public function make(Widget $w)
{
print("Making $w->name\n");
$w->created=TRUE;
}
}
//建立一个组件对象
$thing = new Widget;
$thing->name = 'Gadget';
//装配组件
Assembler::make($thing);
?>
除了传递参数的变量外,方法含有一个特殊的变量. 它代表类的个别实例. 你应当用这个来指向对象的属性和其它方法.一些面向对象的语言假设一个不合格的变量提交给本地属性,但在PHP中方法的任何变量只是在方法的一定范围内. 注意在User类的构造函数中这个变量的使用图2.
I. PHP中如何定义类及其成员属性与操作
3、类中操作的定义
i. 我本人一般喜欢叫操作为成员方法,以下我会叫操作为方法其实都是一样的
ii. 成员方法的定义:成员方法就是对该类定义的一些函数方法,比如拿这个类来例句例子,人能吃饭,能跑步,能敲代码,这就是成员方法。也就是可以做一些可执行性的动作我们理解为成员方法
iii. 成员方法的访问和成员属性一样可以参照上面成员属性的访问介绍。
iv. 成员方法和成员属性一样也包括public,protected,private,static,final并且作用域也是一样的,接下来举一些例子供大家参考和理解。
v. 静态的成员方法只能访问静态的成员属性和成员方法,并且类内部访问静态方法可以使用self::静态方法(), 类外部访问使用类名::静态方法()
J. 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.注意:有一些不错的函数用来处理类和对象。应该关注一下类/对象函数。