导航:首页 > 编程语言 > php如何封装类

php如何封装类

发布时间:2022-05-24 11:45:09

1. php封装一个用户类,里面有登录注册方法,这个要怎么写

第一步:login.php

//登陆方法
public function login(){
//如果用户名和密码为空,则返回登陆页面
if(empty($_POST['username']) || empty($_POST['password'])){
$data['verifycode'] = rand(1000,9999);//生成一个四位数字的验证码
//将验证码放入session中,注意:参数是数组的格式
$this->session->set_userdata($data);
//注意:CI框架默认模板引擎解析的模板文件中变量不需要$符号
//$this->parser->parse("admin/login",$data);
//smarty模板变量赋值
$this->tp->assign("verifycode",$data['verifycode']);
//ci框架在模板文件中使用原生态的PHP语法输出数据
//$this->load->view('login',$data);//登陆页面,注意:参数2需要以数组的形式出现
//显示smarty模板引擎设定的模板文件
$this->tp->display("admin/login.php");
}else{
$username = isset($_POST['username'])&&!empty($_POST['username'])?trim($_POST['username']):'';//用户名
$password = isset($_POST['password'])&&!empty($_POST['password'])?trim($_POST['password']):'';//密码
$verifycode = isset($_POST['verifycode'])&&!empty($_POST['verifycode'])?trim($_POST['verifycode']):'';//验证码

//做验证码的校验
if($verifycode == $this->session->userdata('verifycode')){
//根据用户名及密码获取用户信息,注意:参数2是加密的密码
$user_info=$this->user_model->check_user_login($username,md5($password));
if($user_info['user_id'] > 0){
//将用户id、username、password放入cookie中
//第一种设置cookie的方式:采用php原生态的方法设置的cookie的值
//setcookie("user_id",$user_info['user_id'],86500);
//setcookie("username",$user_info['username'],86500);
//setcookie("password",$user_info['password'],86500);
//echo $_COOKIE['username'];

//第二种设置cookie的方式:通过CI框架的input类库
$this->input->set_cookie("username",$user_info['username'],3600);
$this->input->set_cookie("password",$user_info['password'],3600);
$this->input->set_cookie("user_id",$user_info['user_id'],3600);
//echo $this->input->cookie("password");//适用于控制器
//echo $this->input->cookie("username");//适用于控制器
//echo $_COOKIE['username'];//在模型类中可以通过这种方式获取cookie值
//echo $_COOKIE['password'];//在模型类中可以通过这种方式获取cookie值

//第三种设置cookie的方式:通过CI框架的cookie_helper.php函数库文件
//这种方式不是很灵验,建议大家采取第二种方式即可
//set_cookie("username",$user_info['username'],3600);
//echo get_cookie("username");

//session登陆时使用:将用户名和用户id存入session中
//$data['username']=$user_info['username'];
//$data['user_id']=$user_info['user_id'];
//$this->session->set_userdata($data);

//跳转到指定页面
//注意:site_url()与base_url()的区别,前者带index.php,后者不带index.php
header("location:".site_url("index/index"));
}
}else{
//跳转到登陆页面
header("location:".site_url("common/login"));
}
}
}
}

第二步:User_model.php

//cookie登陆:检测用户是否登陆,如果cookie值失效,则返回false,如果cookie值未失效,则根据cookie中的用户名和密码从数据库中获取用户信息,如果能获取到用户信息,则返回查询到的用户信息,如果没有查询到用户信息,则返回0
public function is_login(){
//获取cookie中的值
if(empty($_COOKIE['username']) || empty($_COOKIE['password'])){
$user_info = false;
}else{
$user_info=$this->check_user_login($_COOKIE['username'],$_COOKIE['password']);
}
return $user_info;
}

//根据用户名及加密密码从数据库中获取用户信息,如果能获取到,则返回获取到的用户信息,否则返回false,注意:密码为加密密码
public function check_user_login($username,$password){
//这里大家要注意:$password为md5加密后的密码
//$this->db->query("select * from ");
//快捷查询类的使用:能为我们提供快速获取数据的方法
//此数组为查询条件
//注意:关联数组
$arr=array(
'username'=>$username,//用户名
'password'=>$password,//加密密码
'status'=>1 //账户为开启状态
);
//在database.php文件中已经设置了数据表的前缀,所以此时数据表无需带前缀
$query = $this->db->get_where("users",$arr);
//返回二维数组
//$data=$query->result_array();
//返回一维数组
$user_info=$query->row_array();
if(!empty($user_info)){
return $user_info;
}else{
return false;
}
}

第三步:其它控制器:

public function __construct(){

//调用父类的构造函数
parent::__construct();
$this->load->library('tp'); //smarty模板解析类
$this->load->helper('url'); //url函数库文件
$this->load->model("user_model");//User_model模型类实例化对象
$this->cur_user=$this->user_model->is_login();
if($this->cur_user === false){
header("location:".site_url("common/login"));
}else{
//如果已经登陆,则重新设置cookie的有效期
$this->input->set_cookie("username",$this->cur_user['username'],3600);
$this->input->set_cookie("password",$this->cur_user['password'],3600);
$this->input->set_cookie("user_id",$this->cur_user['user_id'],3600);
}

$this->load->library('pagination');//分页类库
$this->load->model("role_model");//member_model模型类
$this->load->model("operation_model");//引用operation_model模型
$this->load->model("object_model");//引用object_model模型
$this->load->model("permission_model");//引用permission_model模型
}

2. 什么是php中的封装

封装是php面向对象的其中一个特性,将多个可重复使用的函数封装到一个类里面。在使用时直接实例化该类的某一个方法,获得需要的数据

如果是私有的方法和属性值,外部无法访问,具有一定的保护作用。

面向对象之封装 例子
class A{
public $name = '老王';
// protected $name = '老王';
//private $name = '老王';

//自己访问
public function saya(){
return $this->name;
}
}
//实例化对象
$b = new A;

//public:外部、家族、自己都可以访问
//protected:家族和自己都可以访问,外部无法访问
//private:自己可以访问,外部和家族都无法访问
echo '外部访问:'.$b->name.'<br>'; //如果是私有的,访问不了
echo '家族访问:'.$b->sayb().'<br>';
echo '自己访问:'.$b->saya().'<br>';

3. ThinkPHP里面怎么使用自己封装的类

TP:是一个PHP开源框架,你可以理解成一个工具箱把。里面很多类啊,业务逻辑啊都是封装好的,有自己的使用规则。如果你PHP不是很精通,我建议你还是先去做原生态的PHP,然后再用框架比较好。嘿嘿。
CMS:是一个内容管理系统,它不是一个特定的东西,很多公司都有CMS。
总结:TP是工具,CMS是产品。这样能理解吗?
分析:我估计你的意思可能是想找一个目前公司使用比较广泛的东西,给自己定目标是吗?怎么说呢。还是那句话,你的PHP不精通,这两个弄起来很困难,而且很费时间。不划算,知识这个东西不能空中楼阁,要一点一点的来,慢不怕,关键是每一天都有进步。这里我给你一点建议把。
建议:
1.PHP基础,函数的使用,自定义函数,变量的作用域,“&”的作用等等,都 是基础的东西。
2.OOP,传说中的面向对象,这个怎么说呢,说复杂也复杂,说简单也简单,我的方法是你把生活中的东西抽象出来就学的很快。它包括的内容比较宽泛,需要上面第一条的基础,只要你第一条越扎实,你学OOP就回越快。OOP这个东西是个思想。建议:你开始的时候只要能看懂,能明白别人代码里OOP的意思就OK了,然后自己写一写。这里还包括有些东西,继承啊,封装啊,多态啊。你先了解着三者的用途,然后是抽象类啊,抽象方法啊,他们的规则啊,比如抽象类不需要实现,但其中必须要包含一个抽象方法啊。接口啊,接口是允许继承多个接口的,然后了解一下接口和抽象类的区别。然后再去研究一下PHP OOP里面的一些固定的语法或者说是规则。然后就OK拉,西西。
3.了解设计模式,自己写点东西,对这玩意有所了解,别学完了都忘了。。
4.然后你就可以去看TP或者CMS只类的东西了,对于CMS我建议,你还是先会用,然后再去研究它的构造。西西。

4. PHP如何封装方法

//下面定义一个方法,这个方法很简单,就是处理2个数的相加问题
functionadd($number1,$number2){
$sum=$number1+$number2;
echo$sum;
}
//我们来调用add()方法
add(1,2);
/**
说明:
function这个关键字就是声明方法的。在这个关键字后面的add就是方法的名称,括号中的是参数。
也可以没有参数的。大括号内是方法体。里面是该方法的逻辑。
下面的add(1,2)就是调用add这个方法。如果没有调用方法将不会被执行的。
*/
//定义一个带有返回值的方法
functionre($n1,$n2){
$sum=$n1+$n2;
return$sum;
}
//调用有返回值的方法,调用这个方法,值是5。
echore(2,3);


5. PHP访问MYSQL数据库封装类(附函数说明)

复制代码
代码如下:
<?php
/*
MYSQL
数据库访问封装类
MYSQL
数据访问方式,php4支持以mysql_开头的过程访问方式,php5开始支持以mysqli_开头的过程和mysqli面向对象
访问方式,本封装类以mysql_封装
数据访问的一般流程:
1,连接数据库
mysql_connect
or
mysql_pconnect
2,选择数据库
mysql_select_db
3,执行SQL查询
mysql_query
4,处理返回的数据
mysql_fetch_array
mysql_num_rows
mysql_fetch_assoc
mysql_fetch_row
etc
*/
class
db_mysql
{
var
$querynum
=
0
;
//当前页面进程查询数据库的次数
var
$dblink
;
//数据库连接资源
//链接数据库
function
connect($dbhost,$dbuser,$dbpw,$dbname='',$dbcharset='utf-8',$pconnect=0
,
$halt=true)
{
$func
=
empty($pconnect)
?
'mysql_connect'
:
'mysql_pconnect'
;
$this->dblink
=
@$func($dbhost,$dbuser,$dbpw)
;
if
($halt
&&
!$this->dblink)
{
$this->halt("无法链接数据库!");
}
//设置查询字符集
mysql_query("SET
character_set_connection={$dbcharset},character_set_results={$dbcharset},character_set_client=binary",$this->dblink)
;
//选择数据库
$dbname
&&
@mysql_select_db($dbname,$this->dblink)
;
}
//选择数据库
function
select_db($dbname)
{
return
mysql_select_db($dbname,$this->dblink);
}
//执行SQL查询
function
query($sql)
{
$this->querynum++
;
return
mysql_query($sql,$this->dblink)
;
}
//返回最近一次与连接句柄关联的INSERT,UPDATE
或DELETE
查询所影响的记录行数
function
affected_rows()
{
return
mysql_affected_rows($this->dblink)
;
}
//取得结果集中行的数目,只对select查询的结果集有效
function
num_rows($result)
{
return
mysql_num_rows($result)
;
}
//获得单格的查询结果
function
result($result,$row=0)
{
return
mysql_result($result,$row)
;
}
//取得上一步
INSERT
操作产生的
ID,只对表有AUTO_INCREMENT
ID的操作有效
function
insert_id()
{
return
($id
=
mysql_insert_id($this->dblink))
>=
0
?
$id
:
$this->result($this->query("SELECT
last_insert_id()"),
0);
}
//从结果集提取当前行,以数字为key表示的关联数组形式返回
function
fetch_row($result)
{
return
mysql_fetch_row($result)
;
}
//从结果集提取当前行,以字段名为key表示的关联数组形式返回
function
fetch_assoc($result)
{
return
mysql_fetch_assoc($result);
}
//从结果集提取当前行,以字段名和数字为key表示的关联数组形式返回
function
fetch_array($result)
{
return
mysql_fetch_array($result);
}
//关闭链接
function
close()
{
return
mysql_close($this->dblink)
;
}
//输出简单的错误html提示信息并终止程序
function
halt($msg)
{
$message
=
"<html>\n<head>\n"
;
$message
.=
"<meta
content='text/html;charset=gb2312'>\n"
;
$message
.=
"</head>\n"
;
$message
.=
"<body>\n"
;
$message
.=
"数据库出错:".htmlspecialchars($msg)."\n"
;
$message
.=
"</body>\n"
;
$message
.=
"</html>"
;
echo
$message
;
exit
;
}
}
?>

6. php实现mysql封装类示例

php封装mysql类
复制代码
代码如下:
<?php
class
Mysql
{
private
$host;
private
$user;
private
$pwd;
private
$dbName;
private
$charset;
private
$conn
=
null;
public
function
__construct()
{
$this->host
=
'localhost';
$this->user
=
'root';
$this->pwd
=
'root';
$this->dbName
=
'test';
$this->connect($this->host,$this->user,$this->pwd);
$this->switchDb($this->dbName);
$this->setChar($this->charset);
}
//负责链接
private
function
connect($h,$u,$p)
{
$conn
=
mysql_connect($h,$u,$p);
$this->conn
=
$conn;
}
//负责切换数据库
public
function
switchDb($db)
{
$sql
=
'use'
.
$db;
$this->query($sql);
}
//负责设置字符集
public
function
setChar($char)
{
$sql
=
'set
names'
.
$char;
$this->query($sql);
}
//负责发送sql查询
public
function
query($sql)
{
return
mysql_query($sql,$this->conn);
}
//负责获取多行多列的select结果
public
function
getAll($sql)
{
$list
=
array();
$rs
=
$this->query($sql);
if
(!$rs)
{
return
false;
}
while
($row
=
mysql_fetch_assoc($rs))
{
$list[]
=
$row;
}
return
$list;
}
public
function
getRow($sql)
{
$rs
=
$this->query($sql);
if(!$rs)
{
return
false;
}
return
mysql_fetch_assoc($rs);
}
public
function
getOne($sql)
{
$rs
=
$this->query($sql);
if
(!$rs)
{
return
false;
}
return
mysql_fetch_assoc($rs);
return
$row[0];
}
public
function
close()
{
mysql_close($this->conn);
}
}
echo
'<pre>';
$mysql
=
new
Mysql();
print_r($mysql);
$sql
=
"insert
into
stu
values
(4,'wangwu','99998')";
if($mysql->query($sql)){
echo
"query成功";
}else
{
echo
"失败";
}
echo
"<br
/>";
$sql
=
"select
*
from
stu";
$arr
=
$mysql->getAll($sql);
print_r($arr);
?>

7. html和php混编代码如何封装成类,代码如下

class Menu{

public function getMenu(){
echo '<select name="Proct_Id" id="Proct_Id">';
$sql_pro="select id,proct,lotid from proct";
$res_pro=mysql_query($sql_pro);
while($rs1_pro=mysql_fetch_array($res_pro)){
echo "<option value='{$rs1_pro["id"]}' ";
if ($rs_pro["id"]==$rs1_pro["id"]){
echo "selected";
}
echo '>';
echo "{$rs1_pro["proct"]}-{$rs1_pro["lotid"]}";
echo "</option>";
}
echo " </select>";
}

}

你自己测试一下哦,希望我的回答能帮到你

8. PHP中,类的封装,调用问题

<?
class Page{
function 分页函数(参数){
$perNumber = 2;
$page = $_GET['page'];
$count = mysql_query("select count(*) from people");
$rs = mysql_fetch_array($count);
$totalNumber = $rs[0];
$totalPage = ceil($totalNumber/$perNumber);
if(!isset($page)){
$page = 1;
}
$startCount = ($page-1)*$perNumber;
$result = mysql_query("select * from people limit $startCount,$perNumber");
$num = mysql_numrows($result);

for($i=0;$i<$num;$i++){
$a = mysql_result($result,$i,"id");
$b = mysql_result($result,$i,"name");
$c = mysql_result($result,$i,"age");
echo "<br />".$a."<br />".$b."<br />".$c."<br />";
}

}
}

?>

9. 现在PHP编程的时候一般是把一个功能的实现封装成一个类还是封装成一个方法

单一功能的实现封装成方法比较方便,比如处理时间(现在回复贴子的时间与上次回复的时间间隔这个功能封装成一个方法便可以方便在每个需要的地方调用)。封装成类多数用于模块这种实现多功能的地方。如处理数据库:可以把与数据库有关的功能封装成类,在这个类中实现数据库的连接、查询,添加,删除、修改数据库等方法。还有处理图像,模板处理等等这些模块都可以封装成类有助于代码的可维护性,增强代码的重用性等好处就不多说了

10. php计算长方性面积的封装类

把成员方法和成员属性封装到类中,隐藏属性和方法实现的细节,通过public、protected、private等限定类成员的访问权限,数据被保护在内部,只通过被授权的成员方法才可以操作,尽可能的对成员进行封装。

public:方法或者属性在任何作用域下都可以访问到,而且是默认的,如果没有为一个属性或方法指定访问修饰符,它将是public。
protected:本类和子类可以访问,外部对象不可以调用。
private:只能在本类访问,子类与外部对象都不可能调用。经过private标记的方法或者属性可以在继承类中重新定义,每一个类只能看到它自己定义的私有方法。
这三个修饰符从作用范围上来讲应该像这样从大到小排序:public→protected→private之所以说是在作用范围上,是因为类把一些属性和方法进行了封装,这个封装就决定了数据的“可见性”,这样我们在类的外面不能够随意修改所定义的属性和方法而只能够进行调用,这就是封装的好处,同时也提高了安全性。

阅读全文

与php如何封装类相关的资料

热点内容
手机里面照片文件夹字母怎么写的 浏览:254
php中实现翻译功能用哪个函数 浏览:503
病毒加密文件恢复 浏览:116
无线路由如何设置成服务器 浏览:138
QQ飞车源码更新 浏览:899
虚拟机中编译器 浏览:476
台达PLC编译按钮在哪里 浏览:141
非编程计算器多少钱 浏览:655
房本还完贷款解压 浏览:818
中国程序员有出名吗 浏览:548
亳州云服务器 浏览:632
程序员最难的面试 浏览:894
配音秀app怎么诵读 浏览:751
sparkcore源码 浏览:100
程序员中年生活 浏览:355
读取加密信息失败怎么回事 浏览:510
编译过程之后是预处理吗 浏览:351
安卓是基于什么做出来 浏览:600
视频字幕提取APP怎么使用 浏览:59
js通过ip地址连接服务器吗 浏览:848