学习php5
时间:2006-05-03 来源:ydlhero
最近一直在看php5的文章内容
从0开始学习起 介绍class的 属性方法开始 然后到php5的抽象类 静态变量
1.公共 受保护 跟私有成员的区别
class myClass{
public $public = 'Public';
protected $protected = 'Protected';
private $private = 'Private';
function echoT(){
echo $this->public;
echo '
'.$this->protected;
echo '
'.$this->private;
}
}
$Nc=new myClass();
$Nc->echoT();
echo'
public='.$Nc->public;
echo'
public='.$Nc->private;//发上错误 private 跟protected成员都不可以被访问 只可以在本内部使用;而protected还可以在子类中被访问 private不可以。
2.抽象类
抽象类不可以被实化
抽象类 可以定义属性 跟方法
abstract class AbstractClass {
var $x=45;
abstract public function test();//抽象类中的抽象方法中的动作不可以被执行
}
class ImplementedClass extends AbstractClass {
public function test() {
echo "ImplementedClass::test() called.\n";
echo $this->x;
}
}
/*$o = new ImplementedClass;
$o->test();*/
php5多了这个抽象类具体有何用 在论坛上问了很多人 能说清楚地没有几个。不过从axgle介绍的一篇文章
http://axgle.blogchina.com/259004.html
对类有了进一步的了解 定义一个类 先考虑的是他的业务 而不过程。写程序先考虑的是要做什么 ;而不是考虑要怎么做代码如何写。
3.php5中特有的__call();
//__call 方法 此方法是如果对象中不存在此方法 __call()将会自动调用
//常常用来加载一些过程
class foo {
function __call($name,$arguments) {
print_r($arguments);
print('Did you call me? I m '.$name.'!
');
}
} $x = new foo();
$x->doStuff(45,60);
$x->fancy_stuff();
class Magic {
function __call($name,$arguments) {
if($name=='foo') {
if(is_int($arguments[0])) $this->foo_for_int($arguments[0]);
if(is_string($arguments[0])) $this->foo_for_string($arguments[0]);
}
} 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");
4.__set 和 __get
这是一个很棒的方法,__set 和 __get 方法可以用来捕获一个对象中不存在的变量和方法。
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);
5.静态成员 与方法
在类没有被实化前可以被访问或者试用
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");
如果 $ca=new calculator();
echo $ca->result;//此就不可以用 有误
6.异常处理
异常处理是公认的处理程序错误的理想方法,在 Java 及 C++ 中都有这个概念,我们欣喜的看到,在 PHP5 已经加入了这方面的应用。你可以尝试使用 “try” 和 “catch” 来控制程序的错误。
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
n";
// Some catastrophic measure here
}
我们使用了 “try” 来执行花括号中的语句,当有错误发生的时候,代码会把错误交给 “catch” 子句来处理,在 “catch” 子句中,你需要指明要把错误交给某个对象处理,这样做可以使代码结构看起来更清晰,因为现在我们可以把所有的错误信息交给一个对象来处理。
8.名称空间
名称空间对类的分组或函数分组很有用。它可以把一些相关的类或函数给组合到一起,方便以后调用。
名称空间
namespace Math {
class Complex {
//...code...
function __construct() {
print("hey");
}
}
} $m = new Math::Complex();
注意你需要在何种情况下使用名称空间,在实际运用中,你可能会需要声明两个或多个名称一样的对象来做不同的事情,那么你就可以把他们分别放到不同的名称空间中去(但接口是要相同的)。
文章参考:
http://www.phpe.net/articles/350.shtml
从0开始学习起 介绍class的 属性方法开始 然后到php5的抽象类 静态变量
1.公共 受保护 跟私有成员的区别
class myClass{
public $public = 'Public';
protected $protected = 'Protected';
private $private = 'Private';
function echoT(){
echo $this->public;
echo '
'.$this->protected;
echo '
'.$this->private;
}
}
$Nc=new myClass();
$Nc->echoT();
echo'
public='.$Nc->public;
echo'
public='.$Nc->private;//发上错误 private 跟protected成员都不可以被访问 只可以在本内部使用;而protected还可以在子类中被访问 private不可以。
2.抽象类
抽象类不可以被实化
抽象类 可以定义属性 跟方法
abstract class AbstractClass {
var $x=45;
abstract public function test();//抽象类中的抽象方法中的动作不可以被执行
}
class ImplementedClass extends AbstractClass {
public function test() {
echo "ImplementedClass::test() called.\n";
echo $this->x;
}
}
/*$o = new ImplementedClass;
$o->test();*/
php5多了这个抽象类具体有何用 在论坛上问了很多人 能说清楚地没有几个。不过从axgle介绍的一篇文章
http://axgle.blogchina.com/259004.html
对类有了进一步的了解 定义一个类 先考虑的是他的业务 而不过程。写程序先考虑的是要做什么 ;而不是考虑要怎么做代码如何写。
3.php5中特有的__call();
//__call 方法 此方法是如果对象中不存在此方法 __call()将会自动调用
//常常用来加载一些过程
class foo {
function __call($name,$arguments) {
print_r($arguments);
print('Did you call me? I m '.$name.'!
');
}
} $x = new foo();
$x->doStuff(45,60);
$x->fancy_stuff();
class Magic {
function __call($name,$arguments) {
if($name=='foo') {
if(is_int($arguments[0])) $this->foo_for_int($arguments[0]);
if(is_string($arguments[0])) $this->foo_for_string($arguments[0]);
}
} 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");
4.__set 和 __get
这是一个很棒的方法,__set 和 __get 方法可以用来捕获一个对象中不存在的变量和方法。
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);
5.静态成员 与方法
在类没有被实化前可以被访问或者试用
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");
如果 $ca=new calculator();
echo $ca->result;//此就不可以用 有误
6.异常处理
异常处理是公认的处理程序错误的理想方法,在 Java 及 C++ 中都有这个概念,我们欣喜的看到,在 PHP5 已经加入了这方面的应用。你可以尝试使用 “try” 和 “catch” 来控制程序的错误。
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
n";
// Some catastrophic measure here
}
我们使用了 “try” 来执行花括号中的语句,当有错误发生的时候,代码会把错误交给 “catch” 子句来处理,在 “catch” 子句中,你需要指明要把错误交给某个对象处理,这样做可以使代码结构看起来更清晰,因为现在我们可以把所有的错误信息交给一个对象来处理。
8.名称空间
名称空间对类的分组或函数分组很有用。它可以把一些相关的类或函数给组合到一起,方便以后调用。
名称空间
namespace Math {
class Complex {
//...code...
function __construct() {
print("hey");
}
}
} $m = new Math::Complex();
注意你需要在何种情况下使用名称空间,在实际运用中,你可能会需要声明两个或多个名称一样的对象来做不同的事情,那么你就可以把他们分别放到不同的名称空间中去(但接口是要相同的)。
文章参考:
http://www.phpe.net/articles/350.shtml
相关阅读 更多 +