Php 实例化变量=新对象;
我开始做php OO(我知道javaOO),但我希望有人能帮我实例化一个变量,这样我就可以调用它的方法了 几个小时前,我读了一篇文章,我会这么做。如何将对象会话从PHP传递到MySQL 我把所有的类都放在GitHub端 我正在使用本教程: 全2级: 我正在尝试与以下对象建立联系:Php 实例化变量=新对象;,php,class,object,Php,Class,Object,我开始做php OO(我知道javaOO),但我希望有人能帮我实例化一个变量,这样我就可以调用它的方法了 几个小时前,我读了一篇文章,我会这么做。如何将对象会话从PHP传递到MySQL 我把所有的类都放在GitHub端 我正在使用本教程: 全2级: 我正在尝试与以下对象建立联系: $ObjSession = new Session; // this line get a error and not work 我怎么了 更新于2016年1月13日16;47 这是我的错误: Warning Ca
$ObjSession = new Session; // this line get a error and not work
我怎么了
更新于2016年1月13日16;47
这是我的错误:
Warning Call to a member function prepare() on a non-object
课堂会话:
class Session
{
private $db;
public function __construct() {
// instantiate the new database object
$this->db = new Database();
// set handler to override session
session_set_save_handler(
array($this, "_open"),
array($this, "_close"),
array($this, "_read"),
array($this, "_write"),
array($this, "_destroy"),
array($this, "_gc")
);
// start the session
session_start();
}
// check if the database connection is up
public function _open() {
if ($this->db) {
return true;
}
return false;
}
// close the database connection
public function _close() {
if ($this->db->close()) {
return true;
}
return false;
}
// read session values
public function _read($id) {
$this->db->query('SELECT data FROM sessions WHERE id = :id');
if ($this->db->execute(array($id))) {
$row = $this->db->single();
return $row->data;
} else {
return '';
}
}
// write session values
public function _write($id, $data) {
$access = time();
$this->db->query('REPLACE INTO sessions VALUES (:id, :access, :data)');
if ($this->db->execute(array($id, $access, $data))) {
return true;
}
return false;
}
// destroy session
public function _destroy($id) {
$this->db->query('DELETE FROM sessions WHERE id = :id');
if ($this->db->execute(array($id))) {
return true;
}
return false;
}
// garbage collection
public function _gc($max) {
$old = time() - $max;
$this->db->query('DELETE * FROM sessions WHERE access < :old');
if ($this->db->execute(array($old))) {
return true;
}
return false;
}
}
define("DB_HOST", "");
define("DB_NAME", "");
define("DB_USER", "");
define("DB_PASS", "");
class Database
{
private $host = DB_HOST;
private $user = DB_USER;
private $pass = DB_PASS;
private $dbname = DB_NAME;
private $dbh;
private $error;
private $stmt;
public function __construct() {
// set DSN
$dsn = 'mysql:host=' . $this->host . ';dbname=' . $this->dbname;
// set OPTIONS
$options = array(
PDO::ATTR_PERSISTENT => true,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
);
// create a new PDO instance or catch any errors
try {
$this->dbh = new PDO($dsn, $this->user, $this->pass, $options);
} catch (PDOException $e) {
$this->error = $e->getMessage();
}
}
// prepare statement
public function query($query) {
$this->stmt = $this->dbh->prepare($query);
}
// bind values and execute statement
public function execute(array $params = null) {
$this->stmt->execute($params);
}
// fetch single row result
public function single() {
try {
return $this->stmt->fetch(PDO::FETCH_OBJ);
} catch (PDOException $e) {
$this->error = $e->getMessage();
}
}
// fetch all results
public function resultset() {
try {
return $this->stmt->fetchAll(PDO::FETCH_OBJ);
} catch (PDOException $e) {
$this->error = $e->getMessage();
}
}
// fetch output parameter from stored procedure
public function outParam($paramName, $paramAsName) {
$this->stmt->closeCursor();
return $this->dbh->query('SELECT ' . $paramName . ' AS ' . $paramAsName)->fetch(PDO::FETCH_OBJ);
}
// get affected rows count
public function rowCount() {
return $this->stmt->rowCount();
}
// get the id of the last inserted row
public function lastInsertId() {
return $this->dbh->lastInsertId();
}
// begin transaction
public function beginTransaction() {
return $this->dbh->beginTransaction();
}
// end transaction
public function endTransaction() {
return $this->dbh->commit();
}
// cancel transaction
public function cancelTransaction() {
return $this->dbh->rollBack();
}
// debug dump parameters
public function debugDumpParams() {
return $this->stmt->debugDumpParams();
}
// close connection
public function close() {
$this->dbh = null;
}
}
很抱歉耽搁了,我做其他事情很开心: 解决方案: 我在不太熟悉的同一个文件中出错(最佳导入) 实例化 添加查询/执行(数据库) 重要信息:所有数组都需要一个标记(:)来识别“:variable” =>$变量
$this->db->execute(数组($id))
到$this->db->execute(数组(“:id”=>$id))
在完成所有步骤后,您可以将会话保存到mysql我并没有真正研究它,但您不是简单地忘记了perenthesis吗<代码>新类名()。打开php错误也可能是明智的,这样您就可以看到发生了什么(
error\u reporting(E\u ALL);ini\u set('display\u errors',1);
,并尝试防止使用错误暂停压缩@
)您遇到了什么错误?开始的php标记应该是不确定为什么选择不显示错误。。。但在您的代码中,有两次您似乎成功地实例化了新对象。(在这个页面上做一个“查找”让“新建”看到它们。)那么问题到底是什么呢?你不能实例化一个变量。变量可以只包含一个值,例如可以是类的实例(或者更确切地说是对类实例的引用)。这个类的一个实例叫做object。看看这里,>
,则数据库
类中的结束标记也错误。
include('database.class.php');
include('session.class.php');
$session = new Session();
PDOException $e