Я работаю с упс в php, пожалуйста, проверьте, что не так с этим кодом - PullRequest
0 голосов
/ 23 сентября 2019

Я работаю с упс в php.Является ли мой код достаточно хорош по соображениям безопасности, и я получаю проблему при закрытии соединения, используя функцию без класса для соединения pdo.Пожалуйста, посоветуйте мне улучшения в моем коде.

<?php

    abstract class connect {

        protected static $DB_HOST = 'localhost';
        protected static $DB_USER = 'root';
        protected static $DB_PASS = '';
        protected static $DB_NAME = 'crm';      
        protected static $CONNECTION_TYPE = 'PDO';  

        abstract protected function connection_pdo();
        abstract protected function connection_close_pdo($conn);

    }

    abstract class connection extends connect {

        protected function connection_pdo(){

            try{

                $conn = new PDO("mysql:host=".static::$DB_HOST.";dbname=".static::$DB_NAME, static::$DB_USER, static::$DB_PASS);

                // set the PDO error mode to exception
                $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

                //echo "Connected successfully";
                return $conn;

            }catch(PDOException $e){

                return "Connection failed: " . $e->getMessage();

            }

        }

        protected function connection_close_pdo($conn){

            return $conn = null;

        }

    }

    trait conn {
        protected function conn(){
            return $this->connection_pdo(); // for pdo only
        }
    }

    trait close {
        protected function close($conn){
            return $this->connection_close_pdo($conn);
        }
    }

    class user extends connection {
        use conn, close;
        protected function user_details (){
            $stmt = $this->conn()->prepare("SELECT * FROM `users`");
            $stmt->execute();

            // set the resulting array to associative
            $result = $stmt->setFetchMode(PDO::FETCH_ASSOC);

            $data = $stmt->fetchAll();

            return $data;
        }

    }


    class openUsers extends user{
        public function ud(){
            return $this->user_details();
        }
    }

    $object = new openUsers();

    var_dump($object->ud());

?>

У меня проблемы с пониманием абстрактного или интерфейса.Если я использую интерфейс как connect вместо абстрактного класса connect и я определю детали базы данных как константу, это будет хорошо для кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...