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 "构造"."<br>";
}

  /* 类成员函数 */
  function setUrl($par){
     $this->url = $par;
  }
  
  function getUrl(){
     echo $this->url."<br>";
  }
  
  function setTitle($par){
     $this->title = $par;
  }
  
  function getTitle(){
     echo $this->title."<br>";
  }
  #类函数同样可以设置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 "子类构造"."<br>";
		}

    function setCate($par){
        $this->category = $par;
    }
  
    function getCate(){
        echo $this->category."<br>";
    }
   
}
$obj = new Child_Site('www.baidu.com', "百度", "搜索引擎");
$obj->getCate();//study方法继承自Student

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

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

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

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

常量访问

echo $obj::constant."<br>";

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

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

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;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值