在Laravel 5中使用自定义类

时间:2016-05-23 11:50:45

标签: php laravel laravel-5

在app / Library中我有一个名为Helpers.php

的文件
<?php

namespace App\Library\Helpers;

class Helpers {
  public function truncate($text) {
    if (strlen($text) > 200) {
      preg_replace('/\s+?(\S+)?$/', '', substr($text, 0, 201));
    }
    return $text;
  }
}

在我的一个观点中,我想使用该类:

  @foreach($data['articles'] as $article)
    <div class="container">
      <div class="article">
        <h1>{{ $article->title }}</h1>
        <p>
          <?php
            $helpers = new \App\Library\Helpers;
            echo $helpers->truncate($article->body);
          ?>
        </p>
      </div>
    </div>
  @endforeach

我收到此错误:

Class 'App\Library\Helpers' not found

2 个答案:

答案 0 :(得分:1)

您正在尝试使用命名空间而不是类,您的类实际上是App\Library\Helpers\Helpers。使用刀片,您可以使用inject方法在视图中显示您的课程。

@inject('helpers', 'App\Library\Helpers\Helpers')

@foreach($data['articles'] as $article)
    <div class="container">
        <div class="article">
            <h1>{{ $article->title }}</h1>
            <p>{{ $helpers->truncate($article->body) }}</p>
        </div>
    </div>
@endforeach

使用inject创建一个作为第一个参数传递的名称的新变量,并将传入的类值作为第二个参数。您的助手现在可以在视图中使用。

答案 1 :(得分:0)

 <?php
    $helpers = new App\Library\Helpers\Helpers;
    echo $helpers->truncate($article->body);
  ?>

或修复命名空间名称。

namespace App\Library;