【问题标题】:php create instance of another classphp 创建另一个类的实例
【发布时间】:2015-05-12 18:56:53
【问题描述】:

我对 php 完全陌生(从 java 迁移)。有两个类

First.php

class First {

    public function method(){
        #how to call second object like java
        #$obj=new Second();
    }
}

Second.php

class Second{
    public function method_second(){
        echo 'second method';
    }
}

我们不能在 First.php 中创建 Second.php 的对象

【问题讨论】:

  • 是的,取消注释代码并查看。
  • 当然可以。您拥有的代码应该可以正常工作。
  • 是的,你可以,只要你有included(或required)Second.php或定义了一个自动加载器。
  • 但是,这是一个依赖是吗?
  • @AbraCadaver 并非所有这种类型的依赖都是可以避免的。例如,考虑一个工厂类。它显然必须实例化其他类来完成它的工作。

标签: php


【解决方案1】:

您应该在First.php 中包含Second.php 文件才能访问Second 类:

<?php
include "Second.php";
class First {
    public function method(){
        #how to call second object like java
        $obj=new Second();
    }
}

你也可以使用自动加载器(不是最好的例子:)):

<?php
function __autoload($class_name) {
    include $class_name . '.php';
}

class First {
    public function method(){
        #how to call second object like java
        $obj=new Second();
    }
}
?>

有关自动装载机的更多信息,请访问 php.net:http://php.net/manual/en/language.oop5.autoload.php

【讨论】:

  • 我们可以在不注册自动加载的情况下使用
  • @Exbury,不,您必须在include "Second.php";require "Second.php";autoloader 之间进行选择。 PHP 应该知道类的定义位置,这些是您应该使用的方法来判断类的位置。
  • 另一个问题我是否将两个类都添加到命名空间 Test\Src;那么我们如何创建对象。如果我这样使用它会抛出异常致命错误:找不到类'Test\Src\Second'
  • 您可以在 SO stackoverflow.com/questions/1830917/…的另一个问题中获得更多信息
猜你喜欢
  • 1970-01-01
  • 2018-11-02
  • 2016-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多