PHP教程之PHP5试用(二)
学习如何将PHP与HTML结合起来完成简单动态页面php5 笼统类笼统类不克不及被实例化。
笼统类与其它类一样,答应界说变量及办法。
笼统类一样可以界说一个笼统的办法,笼统类的办法不会被履行,不外将有能够会在其派生类中履行。
例六:笼统类
<?php
abstract class foo {
protected $x;
abstract function display();
function setX($x) {
$this->x = $x;
}
}
class foo2 extends foo {
function display() {
// Code
}
}
?>
__call
PHP5 的对象新增了一个公用办法 __call(),这个办法用来监督一个对象中的其它办法。假如你试着挪用一个对象中不存在的办法,__call 办法将会被主动挪用。
例七:__call
<?php
class foo {
function __call($name,$arguments) {
print("Did you call me? I'm $name!");
}
} $x = new foo();
$x->doStuff();
$x->fancy_stuff();
?>
这个特别的办法可以被用来完成“过载(overloading)”的举措,如许你就能够反省你的参数而且经由过程挪用一个公有的办法来传递参数。
例八:利用 __call 完成“过载”举措
<?php
class Magic {
function __call($name,$arguments) {
if($name=='foo') {
if(is_int($arguments)) $this->foo_for_int($arguments);
if(is_string($arguments)) $this->foo_for_string($arguments);
}
} private function foo_for_int($x) {
print("oh an int!");
} private function foo_for_string($x) {
print("oh a string!");
}
} $x = new Magic();
$x->foo(3);
$x->foo("3");
?>
__set 和 __get
这是一个很棒的办法,__set 和 __get 办法可以用来捕捉一个对象中不存在的变量和办法。
例九: __set 和 __get
<?php
class foo {
function __set($name,$val) {
print("Hello, you tried to put $val in $name");
}
function __get($name) {
print("Hey you asked for $name");
}
}
$x = new foo();
$x->bar = 3;
print($x->winky_winky);
?>
类型唆使
在 PHP5 中,你可以在对象的办法中指明其参数必需为另外一个对象的实例。
例十:类型唆使
<?php
class foo {
// code ...
}
class bar {
public function process_a_foo(foo $foo) {
// Some code
}
}
$b = new bar();
$f = new foo();
$b->process_a_foo($f);
?>
可以看出,咱们可以显性的在参数前指明一个对象的称号,PHP5 会辨认出这个参数将会如果一个对象实例。
静态成员
静态成员和静态办法在面象对象编程的术语中被称作 “对象办法(class methods)” 和 “对象变量(class variables)”。
“对象办法” 在一个对象没有实例化前答应被挪用。一样,“对象变量” 在一个对象没有实例化前可以被自力操作掌握(不需求用一个对象的办法来掌握)。
例十一:对象办法和对象变量
<?php
class calculator {
static public $pi = 3.14151692;
static public function add($x,$y) {
return $x + $y;
}
}
$s = calculator::$pi;
$result = calculator::add(3,7);
print("$result");
?>
异常处置
异常处置是公认的处置法式毛病的幻想办法,在 Java 及 C++ 中都有这个概念,咱们欣喜的看到,在 PHP5 已到场了这方面的使用。你可以测验考试利用 “try” 和 “catch” 来掌握法式的毛病。
例十二:异常处置
<?php
class foo {
function divide($x,$y) {
if($y==0) throw new Exception("cannot divide by zero");
return $x/$y;
}
}
$x = new foo();
try {
$x->divide(3,0);
} catch (Exception $e) {
echo $e->getMessage();
echo "n<br />n";
// Some catastrophic measure here
}
?>
上例中,咱们利用了 “try” 来履行花括号中的语句,当有毛病产生的时分,代码会把毛病交给 “catch” 子句来处置,在 “catch” 子句中,你需求指明要把毛病交给某个对象处置,如许做可使代码布局看起来更明晰,由于如今咱们可以把一切的毛病信息交给一个对象来处置。
自界说毛病处置
你可以很便利的用自界说的处置毛病的代码来掌握你的法式中的不测。你仅仅需求从异常类中派生出一个本人的毛病掌握类,在你本人的毛病掌握类中,你需求有一个机关函数和一个 getMessage 办法,以下是一个例子。
例十三:自界说毛病处置
<?php
class WeirdProblem extends Exception {
private $data;
function WeirdProblem($data) {
parent::exception();
$this->data = $data;
}
function getMessage() {
return $this->data . " caused a weird exception!";
}
}
?>
如今咱们可使用 “throw new WeirdProblem($foo)” 来抛出一个毛病句柄,假如毛病在 “try” 的代码块中产生,PHP5 会主动把毛病交给 “catch” 局部来处置。
称号空间
称号空间对类的分组或函数分组很有效。它可以把一些相干的类或函数给组合到一同,便利今后挪用。
例十四:称号空间
<?php
namespace Math {
class Complex {
//...code...
function __construct() {
print("hey");
}
}
} $m = new Math::Complex();
?>
注重你需求在何种情形下利用称号空间,在实践应用中,你能够会需求声明两个或多个称号一样的对象来做分歧的工作,那末你就能够把他们分离放到分歧的称号空间中去(但接口是要不异的)。
只要实现最基本的功能就可以了 就是可以添加留言 然后可以显示留言,然后加入管理功能 多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。 实践是检验自己会不会的真理。 你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。 其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。 小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。 因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax 写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。 有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。 首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。 Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81 学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql 我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。 最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。 因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax 要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。 Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81 对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。 先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。 Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81
页:
[1]