如何在PHP中实现注册类(使用OOPS概念)?
我正在用PHP创建一个注册页面,所以我创建了一个class如何在PHP中实现注册类(使用OOPS概念)?,php,class,registration,oop,Php,Class,Registration,Oop,我正在用PHP创建一个注册页面,所以我创建了一个classclass.register.PHP 因为我在PHP中实现了第一次完整的类基方法,并且还使用了PDO。请建议我如何以优化的方式制作有价值的课程。下面是我的课堂: class.register.php 班级注册 { 私有$_confirm=0; public$post_data=array(); 私人$db; 受保护的$db_name='db_movies'; 受保护的$db_用户='root'; 受保护的$db_pass='keshav'
class.register.PHP
因为我在PHP中实现了第一次完整的类基方法,并且还使用了
PDO
。请建议我如何以优化的方式制作有价值的课程。下面是我的课堂:
class.register.php
班级注册
{
私有$_confirm=0;
public$post_data=array();
私人$db;
受保护的$db_name='db_movies';
受保护的$db_用户='root';
受保护的$db_pass='keshav';
函数构造($post_数据)
{
$this->post_data=array_map('trim',$post_data);
$this->db_connect();
返回$this->post_数据;
}
受保护的函数db_connect()
{
试一试{
$this->db=new-PDO(“mysql:host=localhost;dbname=$this->db_-name”,$this->db_-user,$this->db_-pass);
返回$this->db;
}
捕获(PDO$e){
打印“错误!:”$e->getMessage()。“
”;
模具();
}
}
公共函数setPostIntoSession()
{
return$\u SESSION['post\u data']=$this->post\u data;
}
公共函数checkEmailInDB()
{
$stmt=$this->db->prepare(“从tbl_用户中选择COUNT(*),其中email_地址=:email”);
$stmt->bindParam(':email',$this->post_data['email_address',PDO::PARAM_STR);
$stmt->execute();
$result=$stmt->fetchColumn();
返回$result;
}
公共函数insertIntoDB()
{
$qry=“插入tbl\U用户集
电子邮件地址=:电子邮件,
first_name=:first_name,
middle_首字母=:middle_名称,
姓氏=:姓氏,
title=:title,
组织=:组织,
主电话=:主电话,
辅助电话=:辅助电话,
网站=:网站,
如何找到=:找到“;
$stmt=$this->db->prepare($qry);
$stmt->bindParam(':email',$this->post_data['email_address',PDO::PARAM_STR);
$stmt->bindParam(':first\u name',$this->post\u data['first\u name',PDO::PARAM\u STR);
$stmt->bindParam(':middle_name',$this->post_data['middle_initial'],PDO::PARAM_STR);
$stmt->bindParam(':last_name',$this->post_data['last_name'],PDO::PARAM_STR);
$stmt->bindParam(':title',$this->post_data['title',PDO::PARAM_STR);
$stmt->bindParam(':organization',$this->post_data['organization',PDO::PARAM_STR);
$stmt->bindParam(':primary_phone',$this->post_data['primary_phone'],PDO::PARAM_STR);
$stmt->bindParam(':secondary\u phone',$this->post\u data['secondary\u phone',PDO::PARAM\u STR);
$stmt->bindParam(':website',$this->post_data['website'],PDO::PARAM_STR);
$stmt->bindParam(':found',$this->post_data['how_found'],PDO::PARAM_STR);
返回$stmt->execute();
}
}
这里我用的是上等的
signup.php
我想我做的很长,请建议我应该在课堂上实现哪个函数。免责声明:这是我的观点。 我喜欢按照MVC模式编写代码,并用它适当地继承类。为什么我要这么说,这是因为你似乎有很多东西混在一起(虽然代码是正确的)。对我来说,注册更多的是一个过程,而不是一个模型对象,因此为它设置一个模型类并不理想 这就是我如何优化它的: 首先创建一个处理登录/连接和查询执行的通用DB类。 然后,在创建模型时,从该类进行扩展,以便可以使用这些方法。 例如,对于注册,它将注册一个用户,所以假设您有一个用户表,您将创建一个扩展db的用户类。在该用户类中,您可以处理输入验证和插入数据库。 例如:
然后您可以拥有您的用户类(这里是它的结构)
请建议更好的优化和正确的方法来实现类。如果有帮助,请不要忘记标记为已解决。谢谢回复,但我正在使用PDO。。我只是想知道我应该在我的类中导出哪个函数,你可以使用烟雾信号存储,这仍然是相关的。在DB类中,编写与DB服务器建立连接和查询所需的所有代码,然后在继承的类上,向该类(或模型对象)添加特定代码。只需将我的mysql代码更改为您的PDO并尝试一下。您只需要在那里添加特定于pdo的代码。这只是为了说明在这种情况下我认为适当的技术。
class registration
{
private $_confirm = 0;
public $post_data = array();
private $db;
protected $db_name ='db_movies';
protected $db_user = 'root';
protected $db_pass ='keshav';
function __construct($post_data)
{
$this->post_data = array_map('trim',$post_data);
$this->db_connect();
return $this->post_data;
}
protected function db_connect()
{
try {
$this->db = new PDO("mysql:host=localhost;dbname=$this->db_name", $this->db_user, $this->db_pass);
return $this->db;
}
catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
}
public function setPostIntoSession()
{
return $_SESSION['post_data']=$this->post_data;
}
public function checkEmailInDB()
{
$stmt = $this->db->prepare("SELECT COUNT(*) FROM tbl_user WHERE email_address = :email");
$stmt->bindParam(':email',$this->post_data['email_address'],PDO::PARAM_STR);
$stmt->execute();
$result = $stmt->fetchColumn();
return $result;
}
public function insertIntoDB()
{
$qry = "INSERT INTO tbl_user SET
email_address = :email,
first_name = :first_name,
middle_initial = :middle_name,
last_name = :last_name,
title =:title,
organization = : organization,
primary_phone =:primary_phone,
secondary_phone =:secondary_phone,
website =:website,
how_found =:found ";
$stmt = $this->db->prepare($qry);
$stmt->bindParam(':email',$this->post_data['email_address'],PDO::PARAM_STR);
$stmt->bindParam(':first_name',$this->post_data['first_name'],PDO::PARAM_STR);
$stmt->bindParam(':middle_name',$this->post_data['middle_initial'],PDO::PARAM_STR);
$stmt->bindParam(':last_name',$this->post_data['last_name'],PDO::PARAM_STR);
$stmt->bindParam(':title',$this->post_data['title'],PDO::PARAM_STR);
$stmt->bindParam(':organization',$this->post_data['organization'],PDO::PARAM_STR);
$stmt->bindParam(':primary_phone',$this->post_data['primary_phone'],PDO::PARAM_STR);
$stmt->bindParam(':secondary_phone',$this->post_data['secondary_phone'],PDO::PARAM_STR);
$stmt->bindParam(':website',$this->post_data['website'],PDO::PARAM_STR);
$stmt->bindParam(':found',$this->post_data['how_found'],PDO::PARAM_STR);
return $stmt->execute();
}
}
<?php ob_start(); session_start();
include_once ('includes/class.register.php');
$register = new registration($_POST);
$fine = true;
$register->setPostIntoSession();
//echo "<pre>";
//print_r($register);
if(count($_POST)>0){
if($register->checkEmailInDB())
{
echo $_SESSION['error'] ='Sorry,given e-mail address already exists.';
$fine = false;
}
if ($register->post_data['pswd'] !== $register->post_data['confirm_pswd'])
{
echo $_SESSION['error'] ='Sorry,both password are not matching';
$fine = false;
}
else
{
$register->insertIntoDB();
}
}
if($fine == false )
{
//header("location:signup.php");
//exit();
}
else
{
echo "All izz Well";
}
//$register->watch($register);
?>
<?php
class ent_db
{
private $DBUserName;
private $DBPassword;
private $DBHost;
private $DBConnection = null;
function __construct()
{
$this->DBUserName = config::$dbuser;
$this->DBPassword = config::$dbpass;
$this->DBHost = config::$dbhost;
}
function executeQuery($sql)
{
return mysql_query($sql,$this->getConnection());
}
function getConnection()
{
if ($this->DBConnection===null)
return mysql_connect($this->DBHost, $this->DBUserName,$this->DBPassword);
else
return $this->DBConnection;
}
function close()
{
if ($this->DBConnection!== null)
{
mysql_close($this->DBConnection);
$this->DBConnection = null;
}
}
function getAffectedRows()
{
return mysql_affected_rows($this->getConnection());
}
function getAll($sql){
$ret = $this->executeQuery($sql);
if (mysql_num_rows($ret) !== 0)
{
while($row = mysql_fetch_assoc($ret))
{
$return[]=$row;
}
$this->close();
return $return;
}else
{
$this->close();
return false;
}
}
}
?>
<?php
class ent_structures extends ent_db
{
function getStructures($sort=null)
{
$sql = "SELECT * FROM crm.structure WHERE disabled = 0";
$sql.=($sort!==null)?" ORDER BY $sort":"";
$ret = $this->executeQuery($sql);
//or return $this->getAll();
.
.
.
.