> 백엔드 개발 > PHP 튜토리얼 > php-php进阶 - php类有些函数或方法的定义想通过include导入进来,怎么实现?

php-php进阶 - php类有些函数或方法的定义想通过include导入进来,怎么实现?

WBOY
풀어 주다: 2016-06-06 20:13:42
원래의
1124명이 탐색했습니다.

class a{
public function a(){}
include('file.php');
}
我想这样写,可是不支持。

回复内容:

class a{
public function a(){}
include('file.php');
}
我想这样写,可是不支持。

首先要区分函数和方法的区别,你如果是要引入函数的话,在文件头include就可以了,不过需要判断是否定义函数,否则会抛出函数重定义的错误,如果是引入的方法的话要么用继承要么用trait将其变成成员,否则的话就创建一个对应的类实例就可以了,要注意在创建实例的时候,类已经成功被加载

<code>class a{
    public function a(){
        include('file.php');
    }
}</code>
로그인 후 복사

假设你要引入类文件需要调用里面的类方法,现在有两个类文件,file.php和a.php,里面代码分别如下:

file.php

<code><?php class File
{
    // 方法1
    public function function_1()
    {
        // 方法体
    }

    // 方法2
    Public function function_2()
    {
        // 方法体
    }
}

</code></code>
로그인 후 복사

a.php

<code><?php class a
{
    // File类对象
    private $_fileObj = null;

    // @param File $fileObj File类对象
    public function __construct(File $fileObj)
    {
        $this->_fileObj = $fileObj;
    }
}
</code>
로그인 후 복사

a类要使用file类的方法,代码如下:

<code><?php require 'file.php';

class a
{
    // File类对象
    private $_fileObj = null;

    // @param File $fileObj File类对象
    public function __construct(File $fileObj)
    {
        $this->_fileObj = $fileObj;
    }
}
</code>
로그인 후 복사

将file类对象传给a类:

<code>
$file = new a(new File());
</code>
로그인 후 복사

然后就可以在a类中使用file类方法了。

如果是要在类中使用函数那就更简单了,直接将雷倩引入函数文件即可(即将a文件中require的文件改成函数文件即可),因为函数默认注册的是根命名空间。

如果你打算在类中加载一个文件。可以放到 __construct 中。
比如一个文件 a.php

<code class="php"><?php function fa() {
    echo "run fa";
}</code></code>
로그인 후 복사

index.php

<code class="php"><?php class A{
    public function __construct() {
        include "a.php";
        fa();
    }
}
$a = new A();</code></code>
로그인 후 복사

这样在类中就可以加载文件 a.php
因为 include 是一条语句, 不能直接放到类中, 放到类的初始化函数 __construct就可以自动执行。

你的想法儿不对,你还是先理解面向对象吧。
首先来说函数没必要在对象中被引用,对象就是对象,函数就是函数,之所以是函数说明它可能无法没明确的归纳为所属的对象。
方法则是通过继承的方式获得的,不需要include的。
比如你定义了一个水果类,那么这个类可以有 获得果汁含量 的方法,但是不应该有榨汁的方法,那应该是榨汁机对象提供的。
包括所有方法的 万能对象 是不存在的,这个状态下的对象与没有对象想成相同的结果。

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿