-
\在这里是转义符,是为了区分开正则匹配符号和正常的符号的情况。\-告诉计算机代表内容中包含-,而不是代表范围的”-“符号。[\w\-]+表示多次匹配方括号中定义的字符类整体(字母、数字、下划线(\w),还有-(\-))。
查看全部 -
'/\w:(\w{6}+\s{1}+\w{4})/'
\w: 意思是 任意个字母 向后匹配到 : (冒号)位置, 这里 匹配 name:
\w{6} 意思是 再向后匹配6个字符,大括号里代表匹配多少个 这里匹配 steven
\s{1} 意思是 1个空格 这里匹配 空格
\w{4} 意思是 再向后匹配4个字符 这里匹配 jobs
查看全部 -
[\d]表示 匹配数字, {3,4}表示匹配3次或四次 ,
查看全部 -
$p = '/\d+\-\d+/';
正斜线是分隔符;
第一组 \d+是匹配电话的前几位数字,\d匹配数字,+表示1次或多次匹配;
\-匹配-,因为-是有特殊意义的元字符,所以需要转义;
第二组 \d+是匹配电话的后几位数字,\d匹配数字,+表示1次或多次匹配。
查看全部 -
PHP类和对象之访问控制
如果构造函数定义成了私有方法,则不允许直接实例化对象了,这时候一般通过静态方法进行实例化,在设计模式中会经常使用这样的方法来控制对象的创建,比如单例模式只允许有一个全局唯一的对象。
查看全部 -
PHP类和对象之Static静态关键字
静态属性与方法可以在不实例化类的情况下调用,直接使用
类名::方法名
的方式进行调用。静态属性不允许对象使用->操作符调用静态属性需要加$符号
静态方法中,$this伪变量不允许使用。可以使用self,parent,static在内部调用静态方法与属性。
查看全部 -
PHP类和对象之构造函数和析构函数
PHP5可以在类中使用__construct()定义一个构造函数,具有构造函数的类,会在每次对象创建的时候调用该函数,因此常用来在对象创建的时候进行一些初始化工作。
在子类中如果定义了__construct则不会调用父类的__construct,如果需要同时调用父类的构造函数,需要使用parent::__construct()显式的调用。
同样,PHP5支持析构函数,使用__destruct()进行定义,析构函数指的是当某个对象的所有引用被删除,或者对象被显式的销毁时会执行的函数。
查看全部 -
PHP类和对象之定义类的方法
使用关键字static修饰的,称之为静态方法,静态方法不需要实例化对象,可以通过类名直接调用,操作符为双冒号::。
查看全部 -
PHP类和对象之类的属性
默认都为public,外部可以访问。一般通过->对象操作符来访问对象的属性或者方法,对于静态属性则使用::双冒号进行访问。当在类成员方法内部调用的时候,可以使用$this伪变量调用当前对象的属性。
受保护的属性与私有属性不允许外部调用,在类的成员方法内部是可以调用的。
查看全部 -
首先要理解函数的重载,就是同一个函数名,传递不同参数,来实现不同的方法内容。
但php里是不能直接实现的,要通过__call方法。
所谓的函数不存在,是指函数没有在类中定义,但你可以在__call方法中定义这个函数的内容,这个函数的名字就是$name承载的值,而$args就是这个函数传递的参数。
123456789101112131415161718192021222324252627282930 <?php
class
Magic {
//__call方法,实例调用Magic类中未被定义的方法时执行
function
__call(
$name
,
$arguments
) {
//判断实例调用的是否是foo方法
if
(
$name
==
'foo'
) {
//如果是整形,则执行私有方法foo_for_int
if
(
is_int
(
$arguments
[0])){
$this
->foo_for_int(
$arguments
[0]);
}
//如果是字符串,则调用私有方法foo_for_string
if
(
is_string
(
$arguments
[0])){
$this
->foo_for_string(
$arguments
[0]);
}
}
}
//两个私有方法,实例不能直接调用
private
function
foo_for_int(
$x
) {
print
(
"参数是一个整数!"
);
}
private
function
foo_for_string(
$x
) {
print
(
"参数是一个字符串!"
);
}
}
//生成一个实例$x
$x
=
new
Magic();
//参数不同,执行的方法也不同
$x
->foo(3);
$x
->foo(
"3"
);
?>
上面是一个__call方法使用的举例,实例$x调用foo方法,类中没有,执行__call方法,__call方法则根据foo的参数不同,调用了类中的两个私有方法,从而实现了函数的重载
查看全部 -
子类覆盖父类的方法是要通过在子类中重新编写新的方法,如果不更改的话,则默认子类继承父类的方法。例如
class parentClass { public function test(){ echo "parent"; }}
1--> class childClass extends parent{ } 如果子类继承父类但并没有重写其中的test方法,那么则继承父类的test方法
即 $child = new childClass(); $child->test();//输出parent
2--> classchildClass extends parent{ public function test(){ echo "child"; }} 如果子类重写了方法,那么再实例化childClass类调用test方法会调用子类重写后的test方法。也就是说,如果儿子有能力(指重写了方法),那么就能够继承父亲的财产(父类的方法)并且把它发扬光大(重写);如果儿子没能力(没有重写方法),那么久只能够啃老(调用父类的方法)。这样希望能帮你理解吧。
查看全部 -
类的属性必须定义为公有 受保护 私有之一
类中的方法不设置关键词 默认为公有
查看全部 -
子类中含有的protected方法或private方法,在该子类的所有父类中无法调用,protected方法可以被该类和该类的所有子类调用,private方法只能被该类调用。
查看全部 -
如果构造函数定义成了私有方法,则不允许直接实例化对象了,这时候一般通过静态方法进行实例化,在设计模式中会经常使用这样的方法来控制对象的创建,比如单例模式只允许有一个全局唯一的对象。
查看全部 -
问控制通过关键字public,protected和private来实现。被定义为公有的类成员可以在任何地方被访问。被定义为受保护的类成员则可以被其自身以及其子类和父类访问。被定义为私有的类成员则只能被其定义所在的类访问。
查看全部
举报