/trunk/php/framework/app/system/db/Session.php
PHP | 296 lines | 276 code | 18 blank | 2 comment | 35 complexity | 3b9b38a74871410c4cf988ca5a54c226 MD5 | raw file
Possible License(s): MIT, LGPL-2.0, BSD-3-Clause, GPL-2.0
- <?php
- include 'Database.php';
- class Session {
- private $sql;
- private $insert_id;
- private $error;
- public function __construct(){
- }
- public function save ($obj){
- $this->methodas($obj,"afterSave");
- $nameclass = get_class($obj);
- $reflector = new ReflectionClass( $nameclass );
- $properties = $reflector->getProperties();
- $name = "";
- $values = "";
- $num = count($properties);
- $i = 1;
- foreach($properties as $property){
- if($property->getName() != "id"){
- if( $num == $i ){
- $name = $name.$property->getName() ;
- $values = $values."'".$obj->{$property->getName()}."'";
- }else{
- $name = $name.$property->getName().", " ;
- $values = $values."'".$obj->{$property->getName()}."'".", " ;
- }
- }
- $i++;
- }
- $nameclass = substr($nameclass,0,strpos($nameclass,"Model"));
- $this->sql = "INSERT INTO ".$nameclass."( ".$name ." ) values(".$values.");" ;
- if(Database::Connect()->execute($this->sql)){
- $this->insert_id = Database::Connect()->insert_id();
- return true;
- }else{
- $this->error = Database::Connect()->error();
- return false;
- }
-
- }
- public function read ($obj){
- $reflector = new ReflectionClass( get_class($obj) );
- $properties = $reflector->getProperties();
- $name = "";
- $num = count($properties);
- $i = 1;
- foreach($properties as $property){
- if( $num == $i ){
- $name = $name.$property->getName() ;
- }else{
- $name = $name.$property->getName().", " ;
- }
- $i++;
- }
- $nameclass = get_class($obj);
- $nameclass = substr($nameclass,0,strpos($nameclass,"Model"));
- $this->sql = "SELECT ".$name." FROM ".$nameclass." WHERE id = '".$obj->{"id"}."';" ;
- $rst = Database::Connect()->query($this->sql);
- foreach ($rst->record as $value) {
- foreach($properties as $property){
- $obj->{$property->getName()} = $value[$property->getName()] ;
- }
- }
- return $obj;
- }
- public function readAll ($obj){
- $reflector = new ReflectionClass( get_class($obj) );
- $properties = $reflector->getProperties();
- $name = "";
- $num = count($properties);
- $i = 1;
- foreach($properties as $property){
- if( $num == $i ){
- $name = $name.$property->getName() ;
- }else{
- $name = $name.$property->getName().", " ;
- }
- $i++;
- }
- $i = 0;
- $this->sql = "SELECT ".$name." FROM ".get_class($obj).";" ;
- $rst = Database::Connect()->query($this->sql);
- foreach ($rst->record as $value) {
- $objrow = null;
- foreach($properties as $property){
- $objrow->{$property->getName()} = $value[$property->getName()] ;
- }
- $contaner[$i]=$objrow;
- $i++;
- }
- return $contaner;
- }
- public function detail ($obj){
- $nameClass = get_class($obj);
- $reflector = new ReflectionClass( $nameClass );
- $properties = $reflector->getProperties();
- $inner = "";
- $name = "";
- $i = 1;
- $ii = 1;
- $j = 0;
- $num = count($properties);
- foreach($properties as $property){
- if( $num == $ii ){
- $endsWith = substr( $property->getName() , -strlen( "_id" ));
- if($endsWith == "_id"){
- $newClass = substr( $property->getName(),0,-strlen( "_id" ));
- $newObjClass = new ReflectionClass( $newClass );
- $newProperties = $newObjClass->getProperties();
- $newnum = count($newProperties);
- $i = 1;
- foreach($newProperties as $newproperty){
- if( $newnum == $i ){
- $newname = $newname." ".$newClass.".".$newproperty->getName()." '".strtolower($newClass).".".$newproperty->getName()."'" ;
- }else{
- $newname = $newname." ".$newClass.".".$newproperty->getName()." '".strtolower($newClass).".".$newproperty->getName()."', " ;
- }
- $i++;
- }
- $inner = $inner."INNER JOIN ".$newClass." ".$newClass." ON ".$newClass.".id = ".$nameClass.".".$property->getName();
- $foreing[$j] = $newproperty->getName();
- //$foreingname[$j] = $newname;
- $name = $name." ".$nameClass.".".$property->getName()." '".strtolower($nameClass).".".$property->getName()."'" ;
- }else{
- $name = $name." ".$nameClass.".".$property->getName()." '".strtolower($nameClass).".".$property->getName()."'" ;
- }
- }else{
- $endsWith = substr( $property->getName() , -strlen( "_id" ));
- if($endsWith == "_id"){
- $newClass = substr( $property->getName(),0,-strlen( "_id" ));
- $newObjClass = new ReflectionClass( $newClass );
- $newProperties = $newObjClass->getProperties();
- $newnum = count($newProperties);
- $i = 1;
- foreach($newProperties as $newproperty){
- if( $newnum == $i ){
- $newname = $newname." ".$newClass.".".$newproperty->getName()." '".strtolower($newClass).".".$newproperty->getName()."'" ;
- }else{
- $newname = $newname." ".$newClass.".".$newproperty->getName()." '".strtolower($newClass).".".$newproperty->getName()."', " ;
- }
- $i++;
- }
- $inner = $inner."INNER JOIN ".$newClass." ".$newClass." ON ".$newClass.".id = ".$nameClass.".".$property->getName();
- $foreing[$j] = $newproperty->getName();
- //$foreingname[$j] = $newname;
- $name = $name." ".$nameClass.".".$property->getName()." '".strtolower($nameClass).".".$property->getName()."', " ;
- }else{
- $name = $name." ".$nameClass.".".$property->getName()." '".strtolower($nameClass).".".$property->getName()."', " ;
- }
- }
- $ii++;
- }
- $this->sql = "SELECT ".$name." , ".$newname." "." FROM ".get_class($obj)." ".get_class($obj)." ".$inner." WHERE ".get_class($obj).".id = '".$obj->{"id"}."';" ;
- return Database::Connect()->query($this->sql);
- }
- public function detailAll ($obj){
- $nameClass = get_class($obj);
- $reflector = new ReflectionClass( $nameClass );
- $nameClass = substr($nameClass,0,strpos($nameClass,"Model"));
- $properties = $reflector->getProperties();
- $inner = "";
- $name = "";
- $i = 1;
- $ii = 1;
- $j = 0;
- $num = count($properties);
- foreach($properties as $property){
- if( $num == $ii ){
- $endsWith = substr( $property->getName() , -strlen( "_id" ));
- if($endsWith == "_id"){
- $newClass = substr( $property->getName(),0,-strlen( "_id" ));
- $newObjClass = new ReflectionClass( $newClass );
- $newProperties = $newObjClass->getProperties();
- $newnum = count($newProperties);
- $i = 1;
- foreach($newProperties as $newproperty){
- if( $newnum == $i ){
- $newname = $newname." ".$newClass.".".$newproperty->getName()." '".strtolower($newClass).".".$newproperty->getName()."'" ;
- }else{
- $newname = $newname." ".$newClass.".".$newproperty->getName()." '".strtolower($newClass).".".$newproperty->getName()."', " ;
- }
- $i++;
- }
- $inner = $inner."INNER JOIN ".$newClass." ".$newClass." ON ".$newClass.".id = ".$nameClass.".".$property->getName();
- $foreing[$j] = $newproperty->getName();
- $name = $name." ".$nameClass.".".$property->getName()." '".strtolower($nameClass).".".$property->getName()."'" ;
- }else{
- $name = $name." ".$nameClass.".".$property->getName()." '".strtolower($nameClass).".".$property->getName()."'" ;
- }
- }else{
- $endsWith = substr( $property->getName() , -strlen( "_id" ));
- if($endsWith == "_id"){
- $newClass = substr( $property->getName(),0,-strlen( "_id" ));
- $newObjClass = new ReflectionClass( $newClass );
- $newProperties = $newObjClass->getProperties();
- $newnum = count($newProperties);
- $i = 1;
- foreach($newProperties as $newproperty){
- if( $newnum == $i ){
- $newname = $newname." ".$newClass.".".$newproperty->getName()." '".strtolower($newClass).".".$newproperty->getName()."'" ;
- }else{
- $newname = $newname." ".$newClass.".".$newproperty->getName()." '".strtolower($newClass).".".$newproperty->getName()."', " ;
- }
- $i++;
- }
- $inner = $inner."INNER JOIN ".$newClass." ".$newClass." ON ".$newClass.".id = ".$nameClass.".".$property->getName();
- $foreing[$j] = $newproperty->getName();
- $name = $name." ".$nameClass.".".$property->getName()." '".strtolower($nameClass).".".$property->getName()."', " ;
- }else{
- $name = $name." ".$nameClass.".".$property->getName()." '".strtolower($nameClass).".".$property->getName()."', " ;
- }
- }
- $ii++;
- }
- if($newname==""){
- $this->sql = "SELECT ".$name." FROM ".$nameClass." ".$nameClass." ".$inner.";" ;
- }else{
- $this->sql = "SELECT ".$name." , ".$newname." "." FROM ".$nameClass." ".$nameClass." ".$inner.";" ;
- }
- $rst = Database::Connect()->query($this->sql);
- return $rst;
- }
- public function update ($obj){
- $reflector = new ReflectionClass( get_class($obj) );
- $properties = $reflector->getProperties();
- $values = "";
- $num = count($properties);
- $i = 1;
- foreach($properties as $property){
- if( $num == $i ){
- $values = $values.$property->getName()." = '".$obj->{$property->getName()}."'";
- }else{
- $values = $values.$property->getName()." = '".$obj->{$property->getName()}."'".", " ;
- }
- $i++;
- }
- $nameclass = substr(get_class($obj),0,strpos(get_class($obj),"Model"));
- $this->sql = "UPDATE ".$nameclass." SET ".$values." WHERE id = '".$obj->{"id"}."';" ;
-
- if(Database::Connect()->execute($this->sql)){
- $this->insert_id = Database::Connect()->insert_id();
- return true;
- }else{
- $this->error = Database::Connect()->error();
- return false;
- }
- }
- public function delete ($obj){
- $nameclass = substr(get_class($obj),0,strpos(get_class($obj),"Model"));
- $this->sql = "DELETE FROM ".$nameclass." WHERE id = '".$obj->{"id"}."';" ;
- if(Database::Connect()->execute($this->sql)){
- $this->insert_id = Database::Connect()->insert_id();
- return true;
- }else{
- $this->error = Database::Connect()->error();
- return false;
- }
- }
- public function query ($sql){
- $this->sql = $sql;
- $rst = Database::Connect()->query($this->sql);
- return $rst;
- }
- public function traceSQL(){
- return $this->sql;
- }
- public function getInsertID(){
- return $this->insert_id;
- }
- public function methodas($obj,$method_name){
- if(method_exists(get_class($obj),$method_name)){
- $method= new ReflectionMethod(get_class($obj),$method_name);
- $method->invoke($obj);
- }
- }
-
- public function error(){
- return $this->error;
- }
- }
- ?>