PHP 类的封装和使用

Posted Shuo_128

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP 类的封装和使用相关的知识,希望对你有一定的参考价值。

类:相似的数据和数据操作的封装  class

  成员量:普通的量加上一定的修饰就变成了成员量 public,protected,private

  成员方法:普通的函数,加上一定的修饰,放入到类中就变成了成员方法.

  实例化:类创建特例的过程(实例化一个对象 new)

  对象: 类的特例或者实例   object

 

认识类 -> 类的封装 -> 类的实例化 -> 对象的认识 -> 操作对象

 

------------------------------------------------------------------------------------------------------

类的使用步骤:

  1)创建类  class

    语法格式:

      class 类名{

      类的实现:

        成员量

        成员方法

      }

类名规范:

  1) 类名只能使用字母,下划线开头,不能以数字开头

  2) 类名不能使用关键字

  3) 类名一定有意义

  4) 类名不区分大小写,但是最好使用驼峰法的写法

    userModel       UserModel

  5)类名不能重复

  6) Class Connect{ } 空类,空函数么有意义,空类是为了项目后期扩展预留的接口

 

实例化类(instance):

  对象变量 = new 类名;

  或者  对象变量 = new 类名();

     对象变量:  普通的变量,只不过他的类型是对象类型

$object = new myClass;/new myClass();

 

 类的使用

  is_object():判断某个变量是否是对象;

  instanceof:判断对象是否是某个类的实例化

<?php
    // 类使用步骤
    class MyClass{
        
    }
    $obj = new MyClass;
    if(Class_exists("MyClass")){
        if(is_object($obj))
            echo "obj is object";
        else
            echo "obj isnot object";
        
    }else{
        echo "myclass isnot exists";
    }
?>

  对象的实例化过程中,类名不区分大小写,后面可以有小括号也可省略,但是一定要注意,声明类的时候是没有小括号的(区别于函数)

成员变量:

  普通的变量放入到类中就变成了成员量(类的属性)

  格式:

    修饰符 变量名[=值];

    变量定义格式:

      修饰符 变量;

    变量的赋值

      修饰符 变量名 = 值;

    修饰符:  public : 公有的,在类内可以使用,在类外也可以使用,等价于 JS 的 var

Public $height = 100;

类外的使用:

  1) 对象名 -> 变量名(无$)

    类内调用

  2) $this -> 变量名(无$) 伪变量

      $this :对象本身

  3) 对于某个对象的操作,对于另外的对象没有任何影响,也就是所谓的对象无关性

成员方法:

  普通的函数放入到的类中就变成了成员方法

  格式:

    修饰符 function 方法名(参数){

      返回值

    }

<?php
    // 类使用步骤
    class MyClass{
        public $age = 100;
    }
    $obj = new MyClass;
    echo $obj -> age ;     // 100
    $obj -> age = 105;     // 105
    echo $obj -> age;
    // 对象操作的无关性
    $obj1 = new MyClass;
    echo $obj1 -> age;     // 100
    $obj1 -> age = 200;
    echo $obj1 -> age;     // 200
    echo $obj -> age;      // 105
?>

类外使用:

  对象 -> 方法名(实参列表);

    类内使用

  $this -> 方法名(实参列表);

$this:

  伪变量

    代表的是当前操作该类的对象。

    类内使用成员变量和成员方法:

     $this -> 变量名(无$)

     $this -> 方法名(参数);

<?php
class UserModel{
    public $user = "admin";
    public $pwd  = "123456";
    public $tag  = 0;         // 用户是否登录的标示
    // 传入用户登录的数据
    public function setUserPwd($u,$p){
        $this -> login($u,$p);
    }
    // 用户进行登录操作
    public function login($tmp_u,$tmp_p){
        if(!$this -> tag){
            if($this -> user == $tmp_u && $this -> pwd == $tmp_p)
                $this -> tag = 1; // 用户是登录状态
        }
    }
    // 判断用户是否登录
    public function checklogin(){
        if($this -> tag == 1)    return true;
        else    return false;
    }
} 
$obj = new UserModel;
$obj -> setUserPwd("admin","123456");
if($obj -> checklogin())
    echo "login ok";
else
    echo "login error";
?>

  类常量:

    类中恒定不变的量

    格式:

     Const 大写的常量名 = 值;

          Eg:

                 Const HOST = “localhost”;

          类外调用:

                 类名 :: 常量名

          类内的调用: self (指本类)

                 Self::常量名

  NOTE:  

    1、::叫做作用域操作符

    2、常量在声明的时候必须赋值!

    3、声明常量的过程中,不需要其他的修饰符

<?php
class Myclass{
    const HOST = "localhost";
    const USER = "root";
    public function show(){
        echo Myclass::HOST;
        echo self::USER;
        
    }
}
echo Myclass::HOST.Myclass::USER;
$obj = new MyClass;
echo "<hr/>";
$obj -> show();
?>

类的封装:

  数据库操作类

    1、定义类名和类功能

    2、类名:mysql

    3、功能:编程语言操作mysql数据库

  分析成员量:

    1、服务器名: $host

    2、数据库名: $dbname

    3、用户名:   $user

    4、密码:     $pwd

    5、链接编码: $code = “utf8”

    6、数据库链接  $link

    7、数据库返回的二维数组  $data = array();

    8、记录集 $result

  分析方法:

    1、添加

    2、删除

    3、修改

    4、查询

    5、数据库链接   _connect(){ 成功返回true }

    6、编码设置

    7、将记录集转换为二维数组

    8、将记录集中的第一条转换为一维数组。

<?php
//功能:数据库操作类
class MySql{
    const HOST  = "localhost";
    const DBNAME = "thinkshop";
    const USER   = "root";
    const PWD    = "";
    
    public $code = "utf8";
    public $link = null;
    public $data = array();
    public $result = null;
    //数据库链接方法
    public function _connect(){
        if(self::HOST != "" && self::USER != ""){
            $this -> link = mysql_connect(self::HOST,self::USER,self::PWD);
            if(is_resource($this -> link)){
                $db = mysql_select_db(self::DBNAME,$this -> link);
                if($db){
                    $this -> setCode();
                    return true;
                }else{
                    return false;
                }
            }else{
                return false;
            }
        }else{
            return false;
        }
    }
    // 设置编码
    public function setCode($code = ""){
        if($code != "")
            $this -> code = $code;
        mysql_query("set names ".$this -> code);
    }
}

$db = new MySql;
if($db -> _connect()) echo "connect ok";
else echo "connect error";
echo mysql_error();
?>

 

以上是关于PHP 类的封装和使用的主要内容,如果未能解决你的问题,请参考以下文章

一个队asp.net session进行了再次封装的C#类的代码

PHP类-类的封装

关于PHP封装

详细解读PHP类的封装 (转)

类的封装性和继承

php类的封装继承和多态的简单理解