文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>学习php5

学习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


相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载