Download .zip |
Info | Documentation | View files (4) | Download .zip | Reputation | Support forum | Blog | Links |
Last Updated | Ratings | Unique User Downloads | Download Rankings | |||||
2020-01-15 (13 days ago) | Not yet rated by the users | Total: 25 This week: 3 | All time: 9,793 This week: 102 |
Version | License | PHP version | Categories | |||
oracle_php 1.0 | Custom (specified... | 5 | PHP 5, Databases, Design Patterns |
Description | Author | ||||||||||||||
It provides a base class that can be extended to create both model classes and controller classes for tables stored in Oracle using OCI, in order to access data records. |
|
Of course, you need to have enabled OCI8 php extension.
See wiki page for documentation. https://github.com/floorin/oracle_php/wiki
After the loadModel() call, results an object that contains the columns of the table as property, and the following methods: findFirst(), find(), next(), exportAsArray(), create(), update(), delete(), beginTransaction(), rollback(), fetchTable(), checkIfIsNull(), commit(), reset() and of course sql_query(). If you find useful and want to use this class but need new features, give me ideas.
https://codreanu.net/lighweight-library-to-work-with-oracle-using-php
A very basic example how to use.
Oracle table:
CREATE TABLE EMPLOYEE
(EMPNO NUMBER NOT NULL,
FIRSTNAME VARCHAR(30) NOT NULL,
LASTNAME VARCHAR(30) NOT NULL,
BIRTHDATE NOT NULL,
HIREDATE NOT NULL,
JOB VARCHAR(30) NOT NULL,
SALARY NUMBER(7,2)
)
Create php file "EmployeeModel.php":
<?php
require('path_to_\OCIdb.php');
class EmployeeModel extends OCIdb{
public function setSource(){
$this->_table_name='employee';
}
}
?>
Create php file "EmployeeController.php":
<?php
require('EmployeeModel.php');
$OCIDB=new OCIdb();
$employeeTable=$OCIDB->loadModel('EmployeeModel');
$employeeTable->empno=123;
$employeeTable->firstname='Florin';
$employeeTable->lastname='Florin';
$employeeTable->setDataFormat('dd.mm.yyyy');
$employeeTable->birthdate='10.05.1971';
if(!$employeeTable->create('commit')){
$status="error";
$messages = $employeeTable->_error_message;
}else{
$status="success";
}
?>
Another basic example:
<?php
require('EmployeeModel.php');
$OCIDB=new OCIdb();
$employeeTable=$OCIDB->loadModel('EmployeeModel');
$employeeTable->findFirst([
'conditions' => 'empno = :vempno',
'bind' => [
":vempno" => 123
]
]);
$employeeTable->lastname='Codreanu';
if(!$employeeTable->update('commit')){
$status="error";
$messages = $employeeTable->_error_message;
}else{
$status="success";
}
?>
Exporting json:
<?php
require('EmployeeModel.php');
$OCIDB=new OCIdb();
$response = new stdClass();
$response->status="getting salary greather than 1000";
$employeeTable=$OCIDB->loadModel('EmployeeModel');
$employeeTable->find([
'conditions' => 'salary>1000',
'order by' =>'salary desc'
]);
$response->rows=$employeeTable->exportAsArray();
die(json_encode($response));
?>
Just very stupid playing around:
<?php
require('EmployeeModel.php');
$OCIDB=new OCIdb();
$employeeTable=$OCIDB->loadModel('EmployeeModel');
$employeeTable->find([
'conditions' => 'lastname like :vlastname',
'bind' => [
":vlastname" => 'JOHN%'
],
'order by'=>'firstname asc'
]);
if($employeeTable->rowExists && $employeeTable->empno==123)
{
$employeeTable->lastname='Codreanu';
$employeeTable->update();
}
$employeeTable->next();
if($employeeTable->rowExists && $employeeTable->lastname='test';)
{
$employeeTable->delete();
}
if($employeeTable->next())//or we can check if next() is still getting data
{
$employeeTable->setDataFormat('dd.mm.yyyy');
$employeeTable->birthdate='25.05.1971';
$employeeTable->update();
}
$employeeTable->commit();
?>
Adding a bit of complexity declaring the model ("EmployeeModel.php"):
<?php
require('path_to_\OCIdb.php');
class EmployeeModel extends OCIdb{
public function setSource(){
$this->_table_name='employee';
}
public function initialize()
{
//set format data
$this->setDataFormat('dd.mm.yyyy');
//skip selecting some columns
$this->skipAttributes(['hiredate','salary']);
//skip some columns on INSERT operation
$this->skipAttributesOnCreate(['empno']);
//skip some columns on UPDATE operation
$this->skipAttributesOnUpdate(['empno','firstname']);
}
/*
of course, you can redeclare, for instance, an insert/update/delete or whatever parent's method in this model
and implement your validations.
*/
}
?>
Files |
File | Role | Description |
---|---|---|
example.php | Example | example |
LICENSE | Lic. | License text |
OCIdb.php | Class | Class source |
README.md | Doc. | Read me |
Version Control | Unique User Downloads | Download Rankings | |||||||||||||||
75% |
|
|
Applications that use this package |
If you know an application of this package, send a message to the author to add a link here.