返回对象(PHP最佳实践)

joegrom5

在编写PHP OOP代码时,对各种类使用“返回对象”以在食物链中传递成功,失败,错误消息等,是一种好的/可接受的/明智的做法?

我现在所拥有的示例:

“返回对象”:

class JsqlReturn{
    public $response;
    public $success;
    public $debug_message;
    public $mysqli_result_obj;
    function __construct($bool=false,$debug_message=NULL,$res=NULL,$mysqli_result_obj=NULL){
        $this->success = $bool;
        $this->response = $res;
        $this->debug_message = $debug_message;
        $this->mysqli_result_obj = $mysqli_result_obj;
    }
}

具有示例方法的主类:

class Jsql{

    function connect($host,$username,$password,$database){ #protected?
        $this->db = new \mysqli($host,$username,$password,$database);
        if($this->db->connect_errno){
            return new JsqlReturn(false,"Connection failed: (".$this->db->connect_errno.") ".$this->db->connect_error);
        }
        else{
            return new JsqlReturn(true,NULL,"Connection success.");
        }
    }

}

执行:

$db = new Jsql;
$return = $db->connect(...);
if($return->success){ echo $return->response; }
else{ echo $return->debug_message; }

我知道在这里使用连接示例是微不足道的,但是我的问题与编码实践有关。

我在此实践中的主要目标是确保我在处理方法的返回数据方面保持一致。

备注:请留意。这是我在这里的第一个问题。:)我一直在慢慢地自学成才,采用了从几年前涉足html到采用程序化php并最终进入OOP的正常方法。

罗比·阿夫里尔(Robbie Averill)

对我来说,这似乎是一种完全合理的方法。

being consistent in how I am handling the return data from methods可以使响应类实现Response接口而言,您将知道所有类型的响应类都将遵循相同的规则,因此可以在整个应用程序中安全地使用它:

interface MyResponseInterface
{
    public function getResponse();
    public function getDebugMessage();
    public function getSuccess();
    public function getMysqliConnection();
}

class JsqlResponse implements MyResponseInterface
{
    // ...
}

然后,您知道只要您的对象返回a JsqlResponse,a TimeResponse,aMemberResponse等等,它们都将实现您的响应接口,因此您的公共获取者将可用,例如:

/** @var MyResponseInterface $return */
$return = $db->connect(...);
if($return->getSuccess()) {
    echo $return->getResponse();
} else {
    echo $return->getDebugMessage();
}

注意:在我可能返回的各种响应的示例中,我想(假设),Time和Member可能不需要MySQL连接,因此也许您可以从中忽略它,MyResponseInterface并为数据库连接创建一个新接口,例如MyDatabaseInterface通用响应类将提供响应,调试消息和成功方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PHP。创建对象的最佳实践

来自分类Dev

Java最佳实践-返回对象与泛型

来自分类Dev

在Java中返回对象的最佳实践

来自分类Dev

Java最佳实践-返回对象与泛型

来自分类Dev

返回PHP函数/方法的最佳实践

来自分类Dev

引用对象的最佳实践

来自分类Dev

在PHP中返回布尔值的最佳实践

来自分类Dev

PHP基于对象类型进行操作的最佳实践

来自分类Dev

PHP exit()的最佳实践

来自分类Dev

循环迭代,返回最佳实践

来自分类Dev

从端点返回数据的最佳实践?

来自分类Dev

角度:对象结构最佳实践

来自分类Dev

Ruby包含对象的最佳实践

来自分类Dev

iOS创建对象最佳实践

来自分类Dev

请求对象的方法的最佳实践

来自分类Dev

PHP如果速记最佳实践

来自分类Dev

Eiffel:如果找不到对象,getter 的最佳实践将返回 Void?

来自分类Dev

Java方法返回多个值的最佳实践?

来自分类Dev

在Java中返回通配符列表的最佳实践

来自分类Dev

最佳实践:何时返回404未找到

来自分类Dev

从库中返回Java未来的最佳实践

来自分类Dev

在Java中返回通配符列表的最佳实践

来自分类Dev

有关引用参数或显式返回值的PHP方法的最佳实践

来自分类Dev

PHP API最佳实践-回显json_encoded对象:不好还是好?

来自分类Dev

从对象返回最佳匹配

来自分类Dev

``对象历史''的Python继承最佳实践

来自分类Dev

从方法更改对象属性(最佳实践)

来自分类Dev

在多个容器中存储对象的最佳实践

来自分类Dev

在课堂上创建对象的最佳实践