PHP 类的封装和使用
<p><strong>类:相似的数据和数据操作的封装 class</strong></p><p> 成员量:普通的量加上一定的修饰就变成了成员量 public,protected,private</p>
<p> 成员方法:普通的函数,加上一定的修饰,放入到类中就变成了成员方法.</p>
<p> 实例化:类创建特例的过程(实例化一个对象 new)</p>
<p> 对象: 类的特例或者实例 object</p>
<p> </p>
<p>认识类 -> 类的封装 -> 类的实例化 -> 对象的认识 -> 操作对象</p>
<p> </p>
<p>------------------------------------------------------------------------------------------------------</p>
<p><strong>类的使用步骤:</strong></p>
<p> 1)创建类 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 UserModel</p>
<p> 5)类名不能重复</p>
<p> 6) Class Connect{ } 空类,空函数么有意义,空类是为了项目后期扩展预留的接口</p>
<p> </p>
<p><strong>实例化类(instance):</strong></p>
<p> 对象变量 = new 类名;</p>
<p> 或者 对象变量 = new 类名();</p>
<p> 对象变量: 普通的变量,只不过他的类型是对象类型</p>
<div class="cnblogs_code">
<pre>$object = new myClass;/new myClass();</pre>
</div>
<p> </p>
<p><strong> 类的使用</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><?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";
}
?></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> 修饰符: public : 公有的,在类内可以使用,在类外也可以使用,等价于 JS 的 var</p>
<div class="cnblogs_code">
<pre>Public $height = 100;</pre>
</div>
<p><strong>类外的使用:</strong></p>
<p> 1) 对象名 -> 变量名(无$)</p>
<p> 类内调用</p>
<p> 2) $this -> 变量名(无$) 伪变量</p>
<p> $this :对象本身</p>
<p> 3) 对于某个对象的操作,对于另外的对象没有任何影响,也就是所谓的对象无关性</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><?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
?></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> 类内使用</p>
<p> $this -> 方法名(实参列表);</p>
<p><strong>$this:</strong></p>
<p> 伪变量</p>
<p> 代表的是当前操作该类的对象。</p>
<p> 类内使用成员变量和成员方法:</p>
<p> $this -> 变量名(无$)</p>
<p> $this -> 方法名(参数);</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><?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";
?></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> Eg:</p>
<p> Const HOST = “localhost”;</p>
<p> 类外调用:</p>
<p> 类名 :: 常量名</p>
<p> 类内的调用: self (指本类)</p>
<p> 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><?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();
?></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、用户名: $user</p>
<p> 4、密码: $pwd</p>
<p> 5、链接编码: $code = “utf8”</p>
<p> 6、数据库链接 $link</p>
<p> 7、数据库返回的二维数组 $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、数据库链接 _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><?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();
?></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]