PHP类扩展
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP类扩展,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2960字,纯文字阅读大概需要5分钟。
内容图文
![PHP类扩展](/upload/InfoBanner/zyjiaocheng/744/6dab816d74af41ae9601eee71ade1c2d.jpg)
我有一个问题,了解类扩展如何工作..
我正在尝试扩展一个类来分割不同文件中的函数,使其更有条理.
但我有问题访问主类的变量和函数到子类.
那是我的意思:
父类:它是uFlex类v 0.88
我不写所有,因为它很长..
class uFlex {
//Constants
const version = 0.88;
const salt = "";
//End of constants\\\ /**
* PDO / database credentials
*/
var $db = array(
"host" => '',
"user" => '',
"pass" => '',
"name" => '', //Database name
"dsn" => '' //Alterntive PDO DSN string
);
function connect(){
if(is_object($this->db)) return true;
/* Connect to an ODBC database using driver invocation */
$user = $this->db['user'];
$pass = $this->db['pass'];
$host = $this->db['host'];
$name = $this->db['name'];
$dsn = $this->db['dsn'];
if(!$dsn){
$dsn = "mysql:dbname={$name};host={$host}";
}
$this->report("Connecting to database...");
try{
$this->db = new PDO($dsn, $user, $pass);
$this->report("Connected to database.");
}catch(PDOException $e){
$this->error("Failed to connect to database, [SQLSTATE] " . $e->getCode());
}
if(is_object($this->db)) return true;
return false;
}
}
然后:
<?php
class admin extends uFlex {
function adm_getUsers(){
if(!$this->connect()) return false;
$sql= "SELECT * from users LIMIT 30";
$st = $this->db->prepare($sql);
$out = $st->execute();
$row = $st->fetchAll(PDO::FETCH_ASSOC);
return $row;
}
function adm_getSingleUser($id){
if(!$this->connect()) return false;
if(is_numeric($id)){
$sql= "SELECT * from users WHERE id = '$id'";
}else{
$sql= "SELECT * from users WHERE username = '$id'";
}
$st = $this->db->prepare($sql);
$out = $st->execute();
$row = $st->fetch(PDO::FETCH_ASSOC);
return $row;
}
}
?>
我在每个页面中包含的配置文件中对它们进行了实际操作:
$user = new uFlex(false);
$admin = new admin();
但是当使用$admin-> adm_getUsers(); $row数组它是空的.
在尝试在两个类之间拆分函数之前,我在主类上使用了相同的函数,并且正在工作.
这是我第一次尝试扩展一个类..我在谷歌搜索,并在这里提出了一些问题,但这对我来说太复杂了,因为我还在学习PHP.
解决方法:
这是继承不是最好的答案.相反,您可以删除继承并使用组合.将您的uFlex实例作为Admin的依赖项传递,如下所示:
$user = new uFlex(false);
$admin = new Admin($user); // uFlex is being passed in
您将首先需要更新您的PHP类,因为有一些更改:
class Admin {
// Added private variable that will hold the uFlex instance
private $user;
// Added a class constructor which will be called when we create a new Admin
function __construct($user) { // Receives an instance of uFlex
$this->user = $user;
}
function adm_getUsers(){
if(!$this->user->connect()) return false; // Call connect on user
$sql= "SELECT * from users LIMIT 30";
$st = $this->user->db->prepare($sql); // Call prepare on db of user
$out = $st->execute();
$row = $st->fetchAll(PDO::FETCH_ASSOC);
return $row;
}
function adm_getSingleUser($id){
if(!$this->user->connect()) return false; // Same here
if(is_numeric($id)) {
$sql= "SELECT * from users WHERE id = '$id'";
} else {
$sql= "SELECT * from users WHERE username = '$id'";
}
$st = $this->user->db->prepare($sql); // And here
$out = $st->execute();
$row = $st->fetch(PDO::FETCH_ASSOC);
return $row;
}
}
内容总结
以上是互联网集市为您收集整理的PHP类扩展全部内容,希望文章能够帮你解决PHP类扩展所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。