Welcome, Guest: Register On Nairaland / LOGIN! / Trending / Recent / New
Stats: 3,194,211 members, 7,953,775 topics. Date: Friday, 20 September 2024 at 05:51 AM

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

Nairaland Forum / Science/Technology / Programming / Please Explain This Script To Me Php OOP (1338 Views)

How Can I Generate Unique Random Num Wt Php Oop / I Want To Learn Php Oop! Prescribe An Ebook / Why Is OOP PHP So Confusing? (2) (3) (4)

(1) (Reply) (Go Down)

Please Explain This Script To Me Php OOP by Thirdwrist(m): 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(m): 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 Like

(1) (Reply)

Make Cash Transfer Without Internet Using Owome, A New Nigerian App!!!!! / New Whatsapp Update Will Make You Quarrel With Your Phone / Developing Enterprise Application With Javafx

(Go Up)

Sections: politics (1) business autos (1) jobs (1) career education (1) romance computers phones travel sports fashion health
religion celebs tv-movies music-radio literature webmasters programming techmarket

Links: (1) (2) (3) (4) (5) (6) (7) (8) (9) (10)

Nairaland - Copyright © 2005 - 2024 Oluwaseun Osewa. All rights reserved. See How To Advertise. 24
Disclaimer: Every Nairaland member is solely responsible for anything that he/she posts or uploads on Nairaland.