php面向对象深入理解(一)

面向对象(Object Oriented Programming,OOP)的基础知识:

第一个例子:

  类Test.class.php

<?php
class Test{
    public $a=1;
    protected $b=2;
    private $c=3;
    public function fun1(){
        //echo "fun1";
        //调用fun2
        $this->b=789;
        $this->fun2();
        //echo $this->c;
    }
    protected function fun2(){
        //echo "fun2";
        echo $this->b;
    }
    private function fun3(){
        echo "fun3";
    }
}

  引用类 text.php

require 'Test.class.php';
$ob=new Test();
echo $ob->a;
echo "<hr/>";
$ob->fun1();

第二个例子(构造函数):

class Person{
     function __construct($name,$sex)
     {
          $this->name=$name;
          $this->sex=$sex;
     }                                              //定义类的属性
     function showName()
     {
         echo $this->name;              //定义类的showName方法
     }
     function showSex()
    {
         echo $this->sex;                 //定义类的showSex方法
    }
 }
 
 class Worker extends Person{
     function __construct($name,$sex,$job)
     {
           parent::__construct($name,$sex);   //调用Person构造                           函数,继承Person
     }
 }

 第三个例子(数据库的例子):

  类Db.class.php

<?php
class DB{
    protected $conn="";
    /*
     * 作用:连接数据库,打开 设置交互字符集,选择数据库
     * 参数:host  username  password dbName charset
     * 返回值:bool
     */
    function connect($host,$username,$password,$dbName,$charset='utf8'){
        $link=mysql_connect($host,$username,$password);
        $this->conn=$link;
        if(is_resource($link)){
            mysql_set_charset($charset);
            $re=mysql_select_db($dbName);
            if($re){
                return true;
            }else{
                return false;
            }
        }else{
            return false;
        }
    }
    /*
     * 作用:执行sql语句
     * 参数:sql语句
     * 返回值:update delete 返回影响记录条数
     *          insert 返回主键id值
     *          select 返回二维数组
     */
    function query($sql){
        $re=mysql_query($sql);
        if($re){
            //判断sql语句的类型
            if(preg_match("/^update|^delete/i",$sql)){
                return mysql_affected_rows();
            }else if(preg_match("/^insert/i",$sql)){
                return mysql_insert_id();
            }else if(preg_match("/^select/i",$sql)){
                //返回二维数组
                $arr=array();
                while($row=mysql_fetch_assoc($re)){
                    $arr[]=$row;
                }
                return $arr;
            }else{
                return $re;
            }
        }else{
            return false;
        }
    }
    
    /*
     * 作用:关闭数据库连接
     * return:bool
     */
    function close(){
        return mysql_close($this->conn);
    }
}

  引用类Db.php

<?php
header("content-type:text/html;charset=utf-8");
require 'Db.class.php';
$ob=new Db();
$ob->connect("localhost", 'root', 'root', 'cms');
$arr=$ob->query("select * from news limit 5");
var_dump($arr);
$ob->close();

 

posted @ 2015-09-01 21:05  tiandi2050  阅读(366)  评论(0编辑  收藏  举报