Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
抽象类';n接口,特别是在PHP中_Php_Oop_Interface_Abstract Class - Fatal编程技术网

抽象类';n接口,特别是在PHP中

抽象类';n接口,特别是在PHP中,php,oop,interface,abstract-class,Php,Oop,Interface,Abstract Class,这个问题是我上一篇文章的延续 既然没有办法在不编辑您的原始帖子的情况下再次发布代码示例,我将开始一篇新帖子。此外,它还包含PHP代码 我正在编写两个类,第一个用于打开和关闭与数据库的连接,第二个用于为DB access提供各种可重用的函数 下面是我的连接类PHP代码: <?php /** * DBConnection Base Class Definition */ /* Include dependency */ require_once("\config\dbconfig.

这个问题是我上一篇文章的延续

既然没有办法在不编辑您的原始帖子的情况下再次发布代码示例,我将开始一篇新帖子。此外,它还包含PHP代码

我正在编写两个类,第一个用于打开和关闭与数据库的连接,第二个用于为DB access提供各种可重用的函数

下面是我的连接类PHP代码:

<?php
/**
* DBConnection Base Class Definition
*/

/* Include dependency */
require_once("\config\dbconfig.php");

abstract class dbconnection 
{
 var $conn;
 //Opens connection for a MySQL DB
 abstract function OpenConnection()
 {
  $conn = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) 
     or die($this->ShowError(mysql_error()));
  mysql_select_db(DB_NAME) or die ($this->ShowError("Connection to MySQL Database Failed. "));  
 }
 
 //Closes connection for a MySQL DB
 abstract function CloseConnection()
 {
  try
  {
   mysql_close($conn);
  }
  catch(exception $ex)
  {
   $this->ShowError($ex);
  }
 }
 
 protected function ShowError($err)
 {
  echo "<script>alert('Error: ' +". $err .");</script>"; 
 }  
}
?>
(1a)是

(1b)似乎是这样。但是你不应该在OOP中使用
die
,请使用

(2) 一般来说,使用接口可能是更好的OOP风格。对于PHP,在这种情况下,使用常量是完全可以的。但这是非常主观的

(1a)是的

(1b)似乎是这样。但是你不应该在OOP中使用
die
,请使用


(2) 一般来说,使用接口可能是更好的OOP风格。对于PHP,在这种情况下,使用常量是完全可以的。但这是非常主观的

我看不出有任何理由将此方法标记为抽象方法。这是可能的,但目的是什么?如果声明为抽象的,则应该在没有主体的情况下定义方法。如果您想强制连接,最好定义一个接口并实现它


以这种方式将db配置定义为常量是不明智的。通过将它们作为参数,您可能会更好。这样,您可以更灵活地连接多个数据库。

我看不出有任何理由将此方法标记为抽象。这是可能的,但目的是什么?如果声明为抽象的,则应该在没有主体的情况下定义方法。如果您想强制连接,最好定义一个接口并实现它

以这种方式将db配置定义为常量是不明智的。通过将它们作为参数,您可能会更好。例如,通过这种方式,您可以更灵活地连接多个数据库

<?php
//Modify constants with data needed to access your own database
define('DB_HOST','localhost:3306');
define('DB_NAME','MyStore');
define('DB_USER','super');
define('DB_PASSWORD','****');
?>