首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >抽象类接口,特别是在PHP中

问抽象类接口,特别是在PHP中
EN

Stack Overflow用户
提问于 2009-11-06 17:49:53
回答 2查看 853关注 0票数 1

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

由于在不编辑原始帖子的情况下无法再次发布代码示例,因此我将开始新的帖子。此外,它还包含PHP代码。

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

下面是我的Connection类的PHP代码:

代码语言:javascript
复制
<?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>"; 
 }  
}
?>

上述代码中包含的文件包含以下代码:

代码语言:javascript
复制
<?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','****');
?>

下面是我对抽象类和接口的查询(上一篇文章继续):

(1)连接类可以是抽象的吗?这些方法写得正确吗?

(2)将第二个代码作为文件"dbconfig.php",为它创建一个接口会不会很好?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-11-06 18:24:01

我看不出你为什么要把这个方法标记为抽象的。这是可能的,但有什么目的呢?如果方法被声明为抽象的,则应该在没有主体的情况下进行定义。如果你想强行实现一种连接方式,你最好定义一个接口并实现它。

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

票数 1
EN

Stack Overflow用户

发布于 2009-11-06 18:01:25

(1a)是

(1b)看起来是这样。但是你不应该在OOP中使用die,请使用exceptions。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1686533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档