PHP类与对象二Word格式.docx
《PHP类与对象二Word格式.docx》由会员分享,可在线阅读,更多相关《PHP类与对象二Word格式.docx(11页珍藏版)》请在冰豆网上搜索。
![PHP类与对象二Word格式.docx](https://file1.bdocx.com/fileroot1/2022-11/16/d11d0f7e-e9a9-47d1-af0c-f1d637817e75/d11d0f7e-e9a9-47d1-af0c-f1d637817e751.gif)
{
public
$public
=
'
Public'
;
protected
$protected
Protected'
private
$private
Private'
function
printHello()
echo
$this->
public;
protected;
private;
}
$obj
new
MyClass();
$obj->
//
这行能被正常执行
这行会产生一个致命错误
这行也会产生一个致命错误
printHello();
输出
Public、Protected
和
Private
MyClass2
MyClass2
extends
可以对
进行重定义,但
而不能
Protected2'
$obj2
MyClass2();
$obj2->
未定义
private
Public、Protected2,但不会输出
Bar
test()
testPrivate();
testPublic();
testPublic()
"
Bar:
:
testPublic"
testPrivate()
testPrivate"
Foo
Foo:
$myFoo
foo();
$myFoo->
test();
testPrivate
testPublic
>
Note:
为了兼容性考虑,在PHP4中使用
var
关键字对变量进行定义的方法在PHP5中仍然有效(只是作为public关键字的一个别名)。
在PHP5.1.3之前的版本,该语法会产生一个
E_STRICT
警告。
对方法的访问控制
类中的方法都必须使用关键字public、protected或private进行定义。
如果没有设置这些关键字,则该方法会被设置成默认的public。
Example#2声明类中的方法
构造函数必须是
public
__construct()
{
声明一个
的方法
MyPublic()
MyProtected()
MyPrivate()
这个方法也是
的
Foo()
MyPublic();
MyProtected();
MyPrivate();
$myclass
MyClass;
$myclass->
Foo();
Private
都被调用了
This
is
Foo2()
$myclass2
MyClass2;
$myclass2->
Foo2();
Public
Protected
都被调用了,但
不会被调用
8.对象继承
继承已为大家所熟知的一个程序设计特性,PHP的对象模型也使用了继承。
继承将会影响到类与类,对象与对象之间的关系。
比如,当扩展一个类,子类就会继承父类的所有公有和保护方法。
但是子类的方法会覆盖父类的方法。
继承对于功能的设计和抽象是非常有用的,而且对于类似的对象增加新功能就无须重新再写这些公用的功能。
Example#1继承代码示例
foo
printItem($string)
.
$string
PHP_EOL;
printPHP()
PHP
great.'
bar
printItem($string)
$foo
$bar
bar();
$foo->
printItem('
baz'
);
Output:
printPHP();
great'
$bar->
9.Static关键字
声明类成员或方法为static,就可以不实例化类而直接访问。
不能通过一个对象来访问其中的静态成员(静态方法除外)。
为了兼容PHP4,如果没有指定“可见性”,属性和方法默认为public。
由于静态方法不需要通过对象即可调用,所以伪变量$this在静态方法中不可用。
静态属性不可以由对象通过->
操作符来访问。
用:
方式调用一个非静态方法会导致一个E_STRICT级别的错误。
就像其它所有的PHP静态变量一样,静态属性只能被初始化为一个字符值或一个常量,不能使用表达式。
所以你可以把静态属性初始化为整型或数组,但不能指向另一个变量或函数返回值,也不能指向一个对象。
PHP5.3.0之后,我们可以用一个变量来动态调用类。
但该变量的值不能为关键字self,
parent或static。
Example#1静态成员代码示例
Foo
static
$my_static
foo'
staticValue()
return
self:
$my_static;
fooStatic()
parent:
print
"
my_static
Undefined
Property"
$foo:
$classname
Foo'
$classname:
5.3.0之后可以动态调用
Bar();
Example#2静态方法代码示例
aStaticMethod()
...
aStaticMethod();