Skip to main content

need help to review my php code

I am learning some OOP on PHP and I have developed some sample code to practise.

Ignoring the functionality, I just want to learn the "best" or "better" way to write OOP codes in PHP.

the following is my code and I hope anyone who has been doing PHP can help to review or comment for any improvements or weaknesses on my code.

<?php

    require_once "sys_config.php";
    require_once "general.inc";
    $para[":user"]= "%";

    $dataset = UserFactory::getUsers($para);

    var_dump($dataset);

?>

next is the UserFactory class

<?php

    class UserFactory{

        public static function getUsers($para)
        {
            $db = new UserDB("CALL getUsers(:user)",$para); //sp

            $objs = $db->execute();
            if(!empty($objs))
                foreach( $objs as $obj)
                {
                    $users[] = new user($obj);
                }
            return $users;
        }
                
    }


?>

next is my UserDB class

<?php

    Class UserDB extends Database{

        protected $conn;
        protected $SQL;
        protected $para;

        function __construct($SQL, $para)
        {
            parent::__construct();
                    
            $this->conn = parent::getConn();
            $this->SQL = $SQL;
            $this->para = $para;
        }

        function execute()
        {
                    
            $query = $this->conn->prepare($this->SQL);
            if(!empty($this->para))
                foreach($this->para as $key=>$val)
                {
                    $query->bindParam($key,$val);
                }
            $results = $query->execute();
                    
            $dataset = null;
                    
            if($results)
            {
                while($row = $query->fetch(PDO::FETCH_OBJ))
                {
                    $dataset[]=$row;
                }
            }   
                
            unset($this->conn); 
                    
            parent::__destruct();
                    
            return $dataset;

        }
                
    }

?>

Next is my Database abstract class.

<?php

    abstract Class Database{

        protected $conn;
                
        function __construct()
        {
            $this->conn = new PDO ("mysql:host=".DB_LOCATION.";dbname=".DB_NAME,DB_USER,DB_PASS);
                
        }
                
        function __destruct()
        {
            unset($this->conn);
                
        }

        function getConn()
        {
            return $this->conn;
        }

        abstract function execute();
    }

?>

Last is my User object class

<?php

    class User{

        private $fullname;
        private $id;
                
        function __construct($userObj)
        {
            $this->fullname = $userObj->fullName;
            $this->id = $userObj->id;
        }
                
        function setFullname($fullname)
        {
            $this->fullname = $fullname;
        }
                
        function getFullname()
        {
            return $this->fullname;
        }
                
        function setId($id)
        {
            $this->id = $id;
        }
                
        function getId()
        {
            return $this->id;
        }
    }

?>
Melvin
  • 149
  • 2