-6

私たちは PHP 開発者と協力し始めました。私は彼のコードを調べましたが、私の観点からは、このようなものを書くのはインクの無駄です。私は個人的にOOPをしません。

彼はこの質問に答えたことはありません.OOPが得意な人なら説明できます.

ファイルinc/path.phpで、ファイルとフォルダーへのパスに異なる変数を使用してクラス Pathを定義します

class Path
{
    var $path_cnfg = null;

    /* URLs */
    var $url_css = '';//for css url
    var $url_js = '';//for javascript url
    var $url_img = '';//for image url

    /* Paths */
    var $path_inc = '';//inc directory path 
    var $path_img = '';//image path


    function Path()
    {
        $this->path_cnfg = new Config();

        /* Setting URL(s)  */

        $this->url_css = $this->path_cnfg->base_url.'assets/css/';
        $this->url_js = $this->path_cnfg->base_url.'assets/js/';
        $this->url_img = $this->path_cnfg->base_url.'assets/img/';

        /* Setting Path(s) */

        $this->path_inc = $this->path_cnfg->root_path.'/inc/';
        $this->path_img = $this->path_cnfg->root_path.'/img/';
    }
}

A. ク​​ラスパス内のメソッドPathの目的は何ですか?

function Path()
{
    $this->path_cnfg = new Config();

    /* Setting URL(s)  */

    $this->url_css = $this->path_cnfg->base_url.'assets/css/';
    $this->url_js = $this->path_cnfg->base_url.'assets/js/';
    $this->url_img = $this->path_cnfg->base_url.'assets/img/';

    /* Setting Path(s) */

    $this->path_inc = $this->path_cnfg->root_path.'/inc/';
    $this->path_img = $this->path_cnfg->root_path.'/img/';
} 

B. obj.php では、その変数をオブジェクト$pathから配列$dataに転送します。

$data['path_img'] = $path->path_img;//Assign image directory path
$data['path_root'] = $config->root_path;//Assign root path
$data['url_base'] = $config->base_url;//Assign base url
$data['url_css'] = $path->url_css;//Assign css directory path
$data['url_js'] = $path->url_js;//Assign javascript directory path
$data['url_img'] = $path->url_img;//Assign url for image

配列$dataを定義するよりもクラスPathを持ち、それを直接使用する目的は何ですか? もともと 6 行のコードで定義できたのと同じ変数 ($data) を取得するために、このすべてのメソッドとオブジェクトを調べる必要があるのはなぜですか。例えば

$data["path_img"] = $config->base_url . "assets/img/";
...
$data["url_css"] = $config->base_url . "/assets/css/"
$data["url_js"] = $config->base_url . "assets/js/"
$data["url_img"] = $config->base_url . "assets/img/"
4

1 に答える 1

1

データと動作をクラスにカプセル化する場合は、オブジェクト指向プログラミングを選択します。クラスのインスタンスは、解決しようとしている問題に適切にマップされます。

すべての問題がオブジェクトで最適に処理されるわけではありません。関数型と宣言型が思い浮かぶプログラミングのスタイルは他にもありますが、それらも優れています。私が知っている科学的プログラミングのほとんどは、オブジェクトではなく、関数型言語または手続き型言語を使用して行われています。

関数型スタイルと比較すると、オブジェクト指向言語は冗長になる可能性があります。

OOP が問題に適切に対応する場合は、オブジェクトを使用してプログラミングする必要はありません。

PHP のオブジェクトについてはよくわかりませんが、後付けだと思います。オブジェクト指向プログラミングのトップ 5 言語には含まれません。

おそらく、問題は実装や言語と同じくらいあなたに関係しています。オブジェクトの観点から考えることに慣れていないと、奇妙に思えるかもしれません。

于 2013-05-08T21:19:23.243 に答える