Php 拉威尔5级酒店
我是L5的初学者。我阅读了关于扩展类的文档,但是我没有找到任何关于将扩展类的文件放在哪里的信息。 **我必须扩展Str.php类。我曾读到,在L4中,必须将该文件放在App/folder下,但我在L5中找不到该文件夹。 那么你能告诉我怎么做吗? 这是我现在掌握的信息:Php 拉威尔5级酒店,php,laravel,Php,Laravel,我是L5的初学者。我阅读了关于扩展类的文档,但是我没有找到任何关于将扩展类的文件放在哪里的信息。 **我必须扩展Str.php类。我曾读到,在L4中,必须将该文件放在App/folder下,但我在L5中找不到该文件夹。 那么你能告诉我怎么做吗? 这是我现在掌握的信息: 首先,必须找到类文件的位置。我们将扩展Str类,该类位于vendor/laravel/framework/src/illusted/Support下。注意,您还可以在app/config/app.php中的别名键下找到此类 现在在
但这是针对L4的,这更像是一个普通的PHP问题,分为两部分:1)如何扩展类和2)将文件放在何处 1) 扩展类不是Laravel或其他任何人提供的东西。就在语言中:
class A{}
类B扩展了{}
只要类A
存在并且可用,那么类B
就可以从中扩展
2) 文件的位置在这里也很重要。如果您正在定义类B
并希望扩展类A
,php运行时需要知道在哪里可以找到A
。通常,类A
与类B
不在同一个文件中定义
有很多方法可以做到这一点。在定义classB
时,您可以选择classA
。这看起来像:
a、 php
b、 php
现在有很多文件,比如在Laravel框架或任何有价值的库中,您将有很多文件要包含,并且必须跟踪如何包含这些文件。那不好玩。因此,PHP提供了一种自动加载类的方法,而不是这样做。也就是说,如果您以一种可预测的方式定义类,PHP就可以知道您在谈论什么类,而无需使用require
或include
语句
自动加载php文件的方法也有很多。在Laravel(以及许多其他项目)中,使用了
这意味着必须以预定义的方式放置文件,以便composer autoloader找到它们。通过阅读有关composer autoloader的内容,然后深入研究代码,了解Laravel的类是如何自动加载的,您将能够了解这是如何发生的 尽管彼得的答案很复杂,但我想我应该写一些更具体的东西:没关系 如果您选中composer.json,您将看到我们正在自动加载
app
目录中的所有内容。因此,选择权真正属于你。重要的是你要保持一个合理和可读的结构。例如,您可以将其放置在app/Lib
中,并为您的所有类命名app\Lib
(当然,如果app
是您的基本名称空间,则可以使用php artisan app:name
对其进行更改)。当然,您也可以为扩展类设置一个类似于Helpers/Lib
的文件夹,并在Helpers
中保留某种形式的Helpers.php
和全局helper函数
你为什么要这样做?嗯,您可能希望有一种简单的方法来调用新的Str
函数,因此不必到处执行Str::yourNewMethod($argument)
,您可以添加一个helper函数yourMethod($argument)
来更轻松地调用该函数(如果您打算广泛使用它)
但是,正如Peter提到的,您必须记住的一点是,您要扩展的类不会自动找到。但是,它将自动加载。因此,要引用它,您必须记住为它命名名称空间,如下面的示例中所示
<?php namespace App\Helpers\Lib
Class Str extends \Illuminate\Support\Str {}
require "a.php";
class B extends A {}
<?php namespace App\Helpers\Lib
Class Str extends \Illuminate\Support\Str {}