Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.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 拉威尔5级酒店_Php_Laravel - Fatal编程技术网

Php 拉威尔5级酒店

Php 拉威尔5级酒店,php,laravel,Php,Laravel,我是L5的初学者。我阅读了关于扩展类的文档,但是我没有找到任何关于将扩展类的文件放在哪里的信息。 **我必须扩展Str.php类。我曾读到,在L4中,必须将该文件放在App/folder下,但我在L5中找不到该文件夹。 那么你能告诉我怎么做吗? 这是我现在掌握的信息: 首先,必须找到类文件的位置。我们将扩展Str类,该类位于vendor/laravel/framework/src/illusted/Support下。注意,您还可以在app/config/app.php中的别名键下找到此类 现在在

我是L5的初学者。我阅读了关于扩展类的文档,但是我没有找到任何关于将扩展类的文件放在哪里的信息。 **我必须扩展Str.php类。我曾读到,在L4中,必须将该文件放在App/folder下,但我在L5中找不到该文件夹。 那么你能告诉我怎么做吗? 这是我现在掌握的信息:

  • 首先,必须找到类文件的位置。我们将扩展Str类,该类位于vendor/laravel/framework/src/illusted/Support下。注意,您还可以在app/config/app.php中的别名键下找到此类
  • 现在在app/folder下创建一个名为lib的新文件夹。此文件夹将保存我们的类扩展。由于Str类被分组在文件夹支持下,因此建议您也在lib下创建一个名为Support的新文件夹
  • 现在在app/lib/Support下创建一个名为Str.php的新文件,您刚刚创建了该文件:

  • 但这是针对L4的,这更像是一个普通的PHP问题,分为两部分:1)如何扩展类和2)将文件放在何处

    1) 扩展类不是Laravel或其他任何人提供的东西。就在语言中:

    class A{}
    类B扩展了{}
    
    只要类
    A
    存在并且可用,那么类
    B
    就可以从中扩展

    2) 文件的位置在这里也很重要。如果您正在定义类
    B
    并希望扩展类
    A
    ,php运行时需要知道在哪里可以找到
    A
    。通常,类
    A
    与类
    B
    不在同一个文件中定义

    有很多方法可以做到这一点。在定义class
    B
    时,您可以选择class
    A
    。这看起来像:

    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 {}