PHP类编程

1、定义类

class Site {
	#类常量不用$
	const constant = '常量值';
  /* 类成员变量 */
  	var $url;
  	var $title;
    public $public = 'Public';  
    protected $protected = 'Protected';
    private $private = 'Private'; // __member
    #静态变量
    public static $my_static = 'foo';

  #构造函数
  function __construct( $par1, $par2 ) {
   $this->url = $par1;
   $this->title = $par2;
   echo "构造"."
"
; } /* 类成员函数 */ function setUrl($par){ $this->url = $par; } function getUrl(){ echo $this->url."
"
; } function setTitle($par){ $this->title = $par; } function getTitle(){ echo $this->title."
"
; } #类函数同样可以设置public、private、protected,子类只能访问公有属性函数 public function printHello() { echo $this->public; echo $this->protected; echo $this->private; } public function staticValue() { return self::$my_static; } #析构函数 function __destruct() { print "销毁 " . $this->name . "\n"; } }

2、类的实例化

$runoob = new Site('www.runoob.com', "菜鸟教程");
$taobao = new Site('www.taobao.com' , "淘宝" );
$google = new Site('www.google.com', "Google 搜索");
// $runoob->setTitle( "菜鸟教程" );
// $taobao->setTitle( "淘宝" );
// $google->setTitle( "Google 搜索" );

// $runoob->setUrl( 'www.runoob.com' );
// $taobao->setUrl( 'www.taobao.com' );
// $google->setUrl( 'www.google.com' );

// 调用成员函数,获取标题和URL
$runoob->getTitle();
$taobao->getTitle();
$google->getTitle();

$runoob->getUrl();
$taobao->getUrl();
$google->getUrl();

3、extends子类继承

class Child_Site extends Site {
   var $category;
		function __construct( $url, $title,$category )
		{
			$this->url = $url;
			$this->title = $title;
			$this->category = $category;
			echo "子类构造"."
"
; } function setCate($par){ $this->category = $par; } function getCate(){ echo $this->category."
"
; } }
$obj = new Child_Site('www.baidu.com', "百度", "搜索引擎");
$obj->getCate();//study方法继承自Student

使用类方法访问可以看到全部变量

echo $obj->printHello()."
"
;

直接调用类成员变量使用 $类指针->变量名即可

echo $obj->public."
"
; #能访问 echo $obj->protected."
"
; #不能访问 echo $obj->private."
"
; #不能访问

常量访问

echo $obj::constant."
"
;

无法通过类成员变量之间访问静态变量,但可以使用函数获得

echo $obj->my_static."
"
; echo $obj->staticValue()."
"
;

4、interface接口类 空类,里面没有具体实现

interface iTemplate
{
    public function setVariable($name, $var); //方法没有{}就表示没有方法体
    //可以new iTempalte()嘛
    public function getHtml($template); //也是抽象方法 abstract public function getHtml($template);,接口方法默认抽象方法为了简单把abstract关键字给去掉了
}

#声明数组

$vars = array();
#foreach循环
foreach($this->vars as $name => $value) {
 		$template = str_replace('{' . $name . '}', $value, $template);
 }

5、抽象类,无实现,类实现用继承实现

abstract class AbstractClass  //new AbstractClass
{
 // 强制要求子类定义这些方法
    abstract protected function getValue();//没有方法体
    abstract protected function prefixValue($prefix);

    // 普通方法(非抽象方法)
    public function printOut() {
        print $this->getValue() . PHP_EOL;
    }
}

你可能感兴趣的:(php,开发语言)