₦airaland Forum

Welcome, Guest: RegisterLoginWith GoogleTrendingRecentNew

Stats: 3,325,335 members, 8,421,407 topics. Date: Saturday, 06 June 2026 at 11:44 AM

Toggle theme

Please Explain This Script To Me Php OOP - Programming - Nairaland

Nairaland ForumScience/TechnologyProgrammingPlease Explain This Script To Me Php OOP (1418 Views)

1 Reply (Go Down)

Please Explain This Script To Me Php OOP by Thirdwrist(op): 12:14am On May 17, 2016
I am making a desperate move to OOP in PHP, before now i coded in procedural with little hitches I dicided to finally make the move to OOP in this new site i am working on, but the hitches are much just to create a login script is like asking a lion to borrow you some of his meat. Please if I can get any one to explain this codes to me it would be good, I understand the other parts of the codes, but this file "mbah".

Please if you have a better OOP PDO login and register it will be much appreciated

a link to the code on Github : https://github.com/actuallymentor/oop-pdo-login

<?php
/**
* DB - A simple database class
*
* @author Author: Vivek Wicky Aswal. (https://twitter.com/#!/VivekWickyAswal)
* @git https://github.com/indieteq/PHP-MySQL-PDO-Database-Class
* @version 0.2ab
*
*/
require("Log.class.php"wink;
class DB
{
# @object, The PDO object
private $pdo;

# @object, PDO statement object
private $sQuery;

# @array, The database settings
private $settings;

# @bool , Connected to the database
private $bConnected = false;

# @object, Object for logging exceptions
private $log;

# @array, The parameters of the SQL query
private $parameters;

/**
* Default Constructor
*
* 1. Instantiate Log class.
* 2. Connect to database.
* 3. Creates the parameter array.
*/
public function __construct()
{
$this->log = new Log();
$this->Connect();
$this->parameters = array();
}

/**
* This method makes connection to the database.
*
* 1. Reads the database settings from a ini file.
* 2. Puts the ini content into the settings array.
* 3. Tries to connect to the database.
* 4. If connection failed, exception is displayed and a log file gets created.
*/
private function Connect()
{
$this->settings = parse_ini_file("settings.ini.php"wink;
$dsn = 'mysql:dbname='.$this->settings["dbname"].';host='.$this->settings["host"].'';
try
{
# Read settings from INI file, set UTF8
$this->pdo = new PDO($dsn, $this->settings["user"], $this->settings["password"],
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"wink);

# We can now log any exceptions on Fatal error.
$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

# Disable emulation of prepared statements, use REAL prepared statements instead.
$this->pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

# Connection succeeded, set the boolean to true.
$this->bConnected = true;
}
catch (PDOException $e)
{
# Write into log
echo $this->ExceptionLog($e->getMessage());
die();
}
}
/*
* You can use this little method if you want to close the PDO connection
*
*/
public function CloseConnection()
{
# Set the PDO object to null to close the connection
# http://www.php.net/manual/en/pdo.connections.php
$this->pdo = null;
}

/**
* Every method which needs to execute a SQL query uses this method.
*
* 1. If not connected, connect to the database.
* 2. Prepare Query.
* 3. Parameterize Query.
* 4. Execute Query.
* 5. On exception : Write Exception into the log + SQL query.
* 6. Reset the Parameters.
*/
private function Init($query,$parameters = ""wink
{
# Connect to database
if(!$this->bConnected) { $this->Connect(); }
try {
# Prepare query
$this->sQuery = $this->pdo->prepare($query);

# Add parameters to the parameter array
$this->bindMore($parameters);

# Bind parameters
if(!empty($this->parameters)) {
foreach($this->parameters as $param)
{
$parameters = explode("\x7F",$param);
$this->sQuery->bindParam($parameters[0],$parameters[1]);
}
}

# Execute SQL
$this->succes = $this->sQuery->execute();
}
catch(PDOException $e)
{
# Write into log and display Exception
echo $this->ExceptionLog($e->getMessage(), $query );
die();
}

# Reset the parameters
$this->parameters = array();
}

/**
* @void
*
* Add the parameter to the parameter array
* @param string $para
* @param string $value
*/
public function bind($para, $value)
{
$this->parameters[sizeof($this->parameters)] = ":" . $para . "\x7F" . utf8_encode($value);
}
/**
* @void
*
* Add more parameters to the parameter array
* @param array $parray
*/
public function bindMore($parray)
{
if(empty($this->parameters) && is_array($parray)) {
$columns = array_keys($parray);
foreach($columns as $i => &$column) {
$this->bind($column, $parray[$column]);
}
}
}
/**
* If the SQL query contains a SELECT or SHOW statement it returns an array containing all of the result set row
* If the SQL statement is a DELETE, INSERT, or UPDATE statement it returns the number of affected rows
*
* @param string $query
* @param array $params
* @param int $fetchmode
* @return mixed
*/
public function query($query,$params = null, $fetchmode = PDO::FETCH_ASSOC)
{
$query = trim($query);

$this->Init($query,$params);

$rawStatement = explode(" ", $query);

# Which SQL statement is used
$statement = strtolower($rawStatement[0]);

if ($statement === 'select' || $statement === 'show') {
return $this->sQuery->fetchAll($fetchmode);
}
elseif ( $statement === 'insert' || $statement === 'update' || $statement === 'delete' ) {
return $this->sQuery->rowCount();
}
else {
return NULL;
}
}

/**
* Returns the last inserted id.
* @return string
*/
public function lastInsertId() {
return $this->pdo->lastInsertId();
}

/**
* Returns an array which represents a column from the result set
*
* @param string $query
* @param array $params
* @return array
*/
public function column($query,$params = null)
{
$this->Init($query,$params);
$Columns = $this->sQuery->fetchAll(PDO::FETCH_NUM);

$column = null;

foreach($Columns as $cells) {
$column[] = $cells[0];
}

return $column;

}
/**
* Returns an array which represents a row from the result set
*
* @param string $query
* @param array $params
* @param int $fetchmode
* @return array
*/
public function row($query,$params = null,$fetchmode = PDO::FETCH_ASSOC)
{
$this->Init($query,$params);
return $this->sQuery->fetch($fetchmode);
}
/**
* Returns the value of one single field/column
*
* @param string $query
* @param array $params
* @return string
*/
public function single($query,$params = null)
{
$this->Init($query,$params);
return $this->sQuery->fetchColumn();
}
/**
* Writes the log and returns the exception
*
* @param string $message
* @param string $sql
* @return string
*/
private function ExceptionLog($message , $sql = ""wink
{
$exception = 'Unhandled Exception. <br />';
$exception .= $message;
$exception .= "<br /> You can find the error back in the log.";
$errorcode = $message;

if(!empty($sql)) {
# Add the Raw SQL to the Log
$message .= "\r\nRaw SQL : " . $sql;
}
# Write into log
$this->log->write($message);

return $errorcode;
}
}
?>
Re: Please Explain This Script To Me Php OOP by Thirdwrist(op): 12:29am On May 17, 2016
dhtml18
guru01
davidthegeek
sonoflucifer
hitz
Re: Please Explain This Script To Me Php OOP by Adesege(m): 1:29am On May 17, 2016
Firstly, you should read about OOP PHP first.

You need to have a first hand knowledge on classes, methods, etc.

Also, you need to have a good folder structure. Categorize similar classes/files into folders and have a good naming convention.

All these are primary.
Re: Please Explain This Script To Me Php OOP by guru01(m): 3:10pm On May 17, 2016
Read the documentation of the class to learn how to use it.
Re: Please Explain This Script To Me Php OOP by Nobody: 5:05pm On May 17, 2016
@op, you are looking at a PHP Database wrapper, much similar to my own own dhtmlsql here - https://github.com/dhtml/dhtmlsql (mine is heavily documented)
1 Reply

How Can I Generate Unique Random Num Wt Php OopI Want To Learn Php Oop! Prescribe An EbookWhy Is OOP PHP So Confusing?234

Unbelievable! This App Is Free On Play Store, Every Nigerian must have It!Artificial IntelligencePeer 2 Peer Donation Site For SALE!