PHP网页编程之PHP5.0对象模子探究之其它特征
PHP于1994年由Rasmus Lerdorf创建,刚刚开始是Rasmus Lerdorf为了要维护个人网页而制作的一个简单的用Perl语言编写的程序。 类型唆使人人都晓得,PHP是一种弱类型的言语。在利用变量前不需求界说,不需求声明变量的数据类型。这在编程中带来良多便当,但也带了一些隐患,出格当变量的类型变更时。在PHP5增添了类型唆使,可以在履行过程当中主动对类办法的参数类型停止判别。这相似于Java2中的RTTI,共同reflection可让咱们很好地掌握对象。
<?php
interface Foo {
function a(Foo $foo);
}
interface Bar {
function b(Bar $bar);
}
class FooBar implements Foo, Bar {
function a(Foo $foo) {
// ...
}
function b(Bar $bar) {
// ...
}
}
$a = new FooBar;
$b = new FooBar;
$a->a($b);
$a->b($b);
?>
在强类型言语中,一切变量的类型将在编译时停止反省,而在PHP中利用类型唆使来对类型的反省则产生在运转时。假如类办法参数的类型不合错误,将会报出相似“Fatal error: Argument 1 must implement interface Bar…”如许的毛病信息。
以下代码:
<?php
function foo(ClassName $object) {
// ...
}
?>
相当于:
<?php
function foo($object) {
if (!($object instanceof ClassName)) {
die("Argument 1 must be an instance of ClassName");
}
}
?>
final关头字
PHP5中新增添了final关头字,它可以加在类或类办法前。标识为final的类办法,在子类中不克不及被覆写。标识为final的类,不克不及被承继,并且个中的办法都默许为final类型。
Final办法:
<?php
class Foo {
final function bar() {
// ...
}
}
?>
Final类:
<?php
final class Foo {
// class definition
}
// 上面这一行是毛病的
// class Bork extends Foo {}
?>
对象复制
后面在内存办理部分说过,PHP5中默许经由过程援用传递对象。像利用$object2=$object1如许的办法复制出的对象是互相联系关系的。假如咱们的确需求复制出一个值与本来不异的对象而但愿方针对象与源对象没有联系关系(像通俗变量那样经由过程值来传递),那末就需求利用clone关头字。假如还但愿在复制的同时变化源对象中的某些部分,可以在类中定一个__clone()函数,到场操作。
<?php
//对象复制
class MyCloneable {
static $id = 0;
function MyCloneable() {
$this->id = self::$id++;
}
/*
function __clone() {
$this->address = "New York";
$this->id = self::$id++;
}
*/
}
$obj = new MyCloneable();
$obj->name = "Hello";
$obj->address = "Tel-Aviv";
print $obj->id . "\n";
$obj_cloned = clone $obj;
print $obj_cloned->id . "\n";
print $obj_cloned->name . "\n";
print $obj_cloned->address . "\n";
?>
以上代码复制出一个完整不异的对象。
然后请把function __clone()这一个函数的正文去失落,从头运转法式。则会复制出一个根基不异,但部分属性变化的对象。
类常量
PHP5中可使用const关头字来界说类常量。
<?php
class Foo {
const constant = "constant";
}
echo "Foo::constant = " . Foo::constant . "\n";
?>
__METHOD__常量
__METHOD__ 是PHP5中新增的“魔术”常量,暗示类办法的称号。
魔术常量是一种PHP预界说常量,它的值可所以变更的,PHP中的其它已存在的魔术常量有__LINE__、__FILE__、__FUNCTION__、__CLASS__等。
<?php
class Foo {
function show() {
echo __METHOD__;
}
}
class Bar extends Foo {}
Foo::show(); // outputs Foo::show
Bar::show(); // outputs Foo::show either since __METHOD__ is
// compile-time evaluated token
function test() {
echo __METHOD__;
}
test(); // outputs test
?>接触MYSQL,开始设计数据库程序 说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年具体的记不清啦,囧。 刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。 爱上php,他也会爱上你。 微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox支持的不是很好,所以能少用还是少用的好。 基础有没有对学习php没有太大区别,关键是兴趣。 学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql 如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了, 做为1门年轻的语言,php一直很努力。 真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎, 装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。 多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。 ,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。 实践是检验自己会不会的真理。 做为1门年轻的语言,php一直很努力。 对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。 学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。 基础有没有对学习php没有太大区别,关键是兴趣。 不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。 你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。
页:
[1]