使用Laravel4的内置功能需要自己的自定义Class文件


Require own custom Class file using Laravel's built in function in Laravel4

我得到了一个自定义类文件,只是为了我自己的自定义函数。

我需要在我的自定义类文件中使用Laravel的Validator函数,

我尝试扩展,使用命名空间等,但不像预期的那样工作。

我不确定如何使用自己的自定义类/helper文件的正确方法,请指导。

class SessionsController extends 'BaseController {
   function __construct()
   {
       //Include my class file @ app/_extra/custom_validator.php
       require_once app_path('_extra/custom_validator.php');
   }
}

这是验证器类文件

 class custom_validator extends Illuminate'Validation'Validator
 {
     public function validate($input,$rules){
         $validation = Validator::make($input,$rules);
         if($validation->passes())return true;
         return $validation->messages();
     }
 }

对于你的自定义类,你可以在你的app目录中有一个单独的文件夹,以你的项目命名。在该文件夹中,您可以拥有自定义验证器。

假设你有一个app/Project/Validators文件夹,在该文件夹中有你的custom_validator类。像这样定义你的类和命名空间

<?php namespace Project'Validators;
 class CustomValidator extends Illuminate'Validation'Validator
 {
     public function validate($input,$rules){
         $validation = Validator::make($input,$rules);
         if($validation->passes())return true;
         return $validation->messages();
     }
 }

然后去你的作曲家。并自动加载这个目录

"autoload": {
    "classmap": [
        "app/commands",
        "app/controllers",
        "app/models",
        "app/database/migrations",
        "app/database/seeds",
        "app/tests/TestCase.php"
    ],
    "psr-4": {
        "Project''": "app/Project"
    }
}

当你想使用这个类时,你可以从它自己的命名空间访问它:

首先在控制器中寻址命名空间:

use Project'Validators'CustomValidator;

,然后你可以像这样实例化这个类:

$validator = new CustomValidator();

比实际从文件系统中要求文件要好得多。别忘了写

composer dump-autoload

当你更新composer.json时。

希望这对你有帮助!

在您的编写器中。Json中,可以将文件添加到自动加载对象的classmap对象中。或者,如果你想要自动加载一个满是文件的目录,你可以将它添加到PSR-0或PSR-4自动加载对象中,如下所示:

...
"autoload": {
  ...
  "psr-0": {
    "Acme": "app/Acme"
  }
...

这将加载app/Acme中的所有类,以便在您的应用程序中使用。