Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.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

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
Php 为什么在OOP中,所有的事情都是在对象中进行的?_Php_Oop_Object - Fatal编程技术网

Php 为什么在OOP中,所有的事情都是在对象中进行的?

Php 为什么在OOP中,所有的事情都是在对象中进行的?,php,oop,object,Php,Oop,Object,我们已经开始与PHP开发者合作,我查看了他的代码,从我的角度来看,编写这样的东西是浪费墨水。我个人不做OOP 他从来没有回答过这个问题,一个善于OOP的人能解释一下吗 在文件inc/path.php中,您使用不同的变量为文件和文件夹的路径定义类路径 class Path { var $path_cnfg = null; /* URLs */ var $url_css = '';//for css url var $url_js = '';//for javasc

我们已经开始与PHP开发者合作,我查看了他的代码,从我的角度来看,编写这样的东西是浪费墨水。我个人不做OOP

他从来没有回答过这个问题,一个善于OOP的人能解释一下吗

在文件inc/path.php中,您使用不同的变量为文件和文件夹的路径定义类路径

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.方法路径类内路径的目的是什么

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并直接使用它的目的是什么?为什么我们需要遍历所有这些方法和对象来获得最初可以在6行代码中定义的相同变量($data)。 e、 g


当将数据和行为封装到类中时,您选择面向对象编程,类的实例很好地映射到您试图解决的问题上

并不是每个问题都最好用对象来解决。还有其他的编程风格——我想到了函数式和声明式——也很好。我所知道的大多数科学编程都是使用函数或过程语言完成的,而不是对象

与函数样式相比,面向对象的语言可能比较冗长

如果OOP确实很好地映射到您的问题上,那么您不需要使用对象编程

我对PHP中的对象了解不多,但我猜它们是事后才想到的。我不认为它是面向对象编程的前五种语言。


也许问题与您的关系与实现或语言的关系一样大。如果你不习惯从对象的角度思考问题,这可能会显得很奇怪。

阅读手册和/或任何基本的OOP教程。您希望得到什么样的答案?为什么我们需要遍历所有这些方法和对象,以获得最初可以在6行代码中定义的相同变量($data)。这是旧代码<代码>路径这里是构造函数,不是一个正常调用的方法。是的,我发现现在在php中,构造函数应该像这样定义_construct()在类的顶部。OOP代表“面向对象编程”,所以它当然是用对象完成的。但您也可以使用帮助器函数。当一个项目达到一定的水平时,你需要进行面向对象的工作,否则很难跟踪每一件事。我不是从对象的角度来考虑的,这是肯定的。我理解,如果你能看到3d或2d中的对象,而不仅仅是用代码设计类,那么它就可以把事情弄清楚一点。
$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/"