惊觉 發表於 2019-6-5 14:51:00

PHP 类的封装和使用

<p><strong>类:相似的数据和数据操作的封装&nbsp; class</strong></p>
<p>  成员量:普通的量加上一定的修饰就变成了成员量 public,protected,private</p>
<p>  成员方法:普通的函数,加上一定的修饰,放入到类中就变成了成员方法.</p>
<p>  实例化:类创建特例的过程(实例化一个对象 new)</p>
<p>  对象: 类的特例或者实例&nbsp;&nbsp; object</p>
<p>&nbsp;</p>
<p>认识类 -&gt; 类的封装 -&gt; 类的实例化 -&gt; 对象的认识 -&gt; 操作对象</p>
<p>&nbsp;</p>
<p>------------------------------------------------------------------------------------------------------</p>
<p><strong>类的使用步骤:</strong></p>
<p>  1)创建类&nbsp; class</p>
<p>    语法格式:</p>
<p>      class 类名{</p>
<p>      类的实现:</p>
<p>        成员量</p>
<p>        成员方法</p>
<p>      }</p>
<p><strong>类名规范:</strong></p>
<p>  1) 类名只能使用字母,下划线开头,不能以数字开头</p>
<p>  2) 类名不能使用关键字</p>
<p>  3) 类名一定有意义</p>
<p>  4) 类名不区分大小写,但是最好使用驼峰法的写法</p>
<p>    userModel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UserModel</p>
<p>  5)类名不能重复</p>
<p>  6)&nbsp;Class Connect{ } 空类,空函数么有意义,空类是为了项目后期扩展预留的接口</p>
<p>&nbsp;</p>
<p><strong>实例化类(instance):</strong></p>
<p>  对象变量 = new 类名;</p>
<p>  或者&nbsp; 对象变量 = new 类名();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 对象变量:&nbsp; 普通的变量,只不过他的类型是对象类型</p>
<div class="cnblogs_code">
<pre>$object = new myClass;/new myClass();</pre>
</div>
<p>&nbsp;</p>
<p><strong>&nbsp;类的使用</strong></p>
<p>  is_object():判断某个变量是否是对象;</p>
<p>  instanceof:判断对象是否是某个类的实例化</p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif"></span></div>
<pre>&lt;?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";
    }
?&gt;</pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif"></span></div>
</div>
<p>  对象的实例化过程中,类名不区分大小写,后面可以有小括号也可省略,但是一定要注意,声明类的时候是没有小括号的(区别于函数)</p>
<p><strong>成员变量:</strong></p>
<p>  普通的变量放入到类中就变成了成员量(类的属性)</p>
<p>  格式:</p>
<p>    修饰符 变量名[=值];</p>
<p>    变量定义格式:</p>
<p>      修饰符 变量;</p>
<p>    变量的赋值</p>
<p>      修饰符 变量名 = 值;</p>
<p>    修饰符:&nbsp; public : 公有的,在类内可以使用,在类外也可以使用,等价于 JS 的 var</p>
<div class="cnblogs_code">
<pre>Public $height = 100;</pre>
</div>
<p><strong>类外的使用:</strong></p>
<p>  1)&nbsp;对象名 -&gt; 变量名(无$)</p>
<p>    类内调用</p>
<p>  2)&nbsp;$this -&gt; 变量名(无$) 伪变量</p>
<p>   &nbsp; &nbsp;$this :对象本身</p>
<p>  3)&nbsp;对于某个对象的操作,对于另外的对象没有任何影响,也就是所谓的对象无关性</p>
<p><strong>成员方法:</strong></p>
<p>  普通的函数放入到的类中就变成了成员方法</p>
<p>  格式:</p>
<p>    修饰符 function 方法名(参数){</p>
<p>      返回值</p>
<p>    }</p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif"></span></div>
<pre>&lt;?php
    // 类使用步骤
    class MyClass{
      public $age = 100;
    }
    $obj = new MyClass;
    echo $obj -&gt; age ;   // 100
    $obj -&gt; age = 105;   // 105
    echo $obj -&gt; age;
    // 对象操作的无关性
    $obj1 = new MyClass;
    echo $obj1 -&gt; age;   // 100
    $obj1 -&gt; age = 200;
    echo $obj1 -&gt; age;   // 200
    echo $obj -&gt; age;      // 105
?&gt;</pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif"></span></div>
</div>
<p><strong>类外使用:</strong></p>
<p>  对象 -&gt; 方法名(实参列表);</p>
<p>    类内使用</p>
<p>  $this -&gt; 方法名(实参列表);</p>
<p><strong>$this:</strong></p>
<p>  伪变量</p>
<p>    代表的是当前操作该类的对象。</p>
<p>    类内使用成员变量和成员方法:</p>
<p>     $this -&gt; 变量名(无$)</p>
<p>     $this -&gt; 方法名(参数);</p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif"></span></div>
<pre>&lt;?php
class UserModel{
    public $user = "admin";
    public $pwd= "123456";
    public $tag= 0;         // 用户是否登录的标示
    // 传入用户登录的数据
    public function setUserPwd($u,$p){
      $this -&gt; login($u,$p);
    }
    // 用户进行登录操作
    public function login($tmp_u,$tmp_p){
      if(!$this -&gt; tag){
            if($this -&gt; user == $tmp_u &amp;&amp; $this -&gt; pwd == $tmp_p)
                $this -&gt; tag = 1; // 用户是登录状态
      }
    }
    // 判断用户是否登录
    public function checklogin(){
      if($this -&gt; tag == 1)    return true;
      else    return false;
    }
}
$obj = new UserModel;
$obj -&gt; setUserPwd("admin","123456");
if($obj -&gt; checklogin())
    echo "login ok";
else
    echo "login error";
?&gt;</pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif"></span></div>
</div>
<p>  类常量:</p>
<p>    类中恒定不变的量</p>
<p>    格式:</p>
<p>     Const 大写的常量名 = 值;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Eg:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Const HOST = “localhost”;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 类外调用:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 类名 :: 常量名</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 类内的调用: self (指本类)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Self::常量名</p>
<p>  NOTE:  </p>
<p>    1、::叫做<strong>作用域操作符</strong></p>
<p>    2、常量在声明的时候必须赋值!</p>
<p>    3、声明常量的过程中,不需要其他的修饰符</p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif"></span></div>
<pre>&lt;?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 "&lt;hr/&gt;";
$obj -&gt; show();
?&gt;</pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif"></span></div>
</div>
<p><strong>类的封装:</strong></p>
<p>  数据库操作类</p>
<p>    1、定义类名和类功能</p>
<p>    2、类名:MySql</p>
<p>    3、功能:编程语言操作mysql数据库</p>
<p>  分析成员量:</p>
<p>    1、服务器名: $host</p>
<p>    2、数据库名: $dbname</p>
<p>    3、用户名:&nbsp;&nbsp; $user</p>
<p>    4、密码:&nbsp;&nbsp;&nbsp;&nbsp; $pwd</p>
<p>    5、链接编码: $code = “utf8”</p>
<p>    6、数据库链接&nbsp; $link</p>
<p>    7、数据库返回的二维数组&nbsp; $data = array();</p>
<p>    8、记录集 $result</p>
<p>  分析方法<span lang="EN-US">:</span></p>
<p>    1、添加</p>
<p>    2、删除</p>
<p>    3、修改</p>
<p>    4、查询</p>
<p>    5、数据库链接&nbsp;&nbsp; _connect(){ 成功返回true }</p>
<p>    6、编码设置</p>
<p>    7、将记录集转换为二维数组</p>
<p>    8、将记录集中的第一条转换为一维数组。</p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif"></span></div>
<pre>&lt;?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 != "" &amp;&amp; self::USER != ""){
            $this -&gt; link = mysql_connect(self::HOST,self::USER,self::PWD);
            if(is_resource($this -&gt; link)){
                $db = mysql_select_db(self::DBNAME,$this -&gt; link);
                if($db){
                  $this -&gt; setCode();
                  return true;
                }else{
                  return false;
                }
            }else{
                return false;
            }
      }else{
            return false;
      }
    }
    // 设置编码
    public function setCode($code = ""){
      if($code != "")
            $this -&gt; code = $code;
      mysql_query("set names ".$this -&gt; code);
    }
}

$db = new MySql;
if($db -&gt; _connect()) echo "connect ok";
else echo "connect error";
echo mysql_error();
?&gt;</pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif"></span></div>
</div><br><br>
来源:https://www.cnblogs.com/mmzz3322/p/10979577.html
頁: [1]
查看完整版本: PHP 类的封装和使用