php - laravel - 不应该是抽象的

时间:2014-12-22 13:50:11

标签: php laravel-5

我正试图获取我网站的公开版本。 我可以连接到该页面。路由正在运行。

该应用正在使用API​​,这就是错误:

ErrorException in Transformer.php line 16:
Runtime Notice: Static function App\Transformers\Transformer::transform() should not be abstract

变压器的调用方式如下: FeedTransformer::transformCollection( $userFeed ) 这是如下所示:

FeedTransformer.php

<?php
namespace App\Transformers;

use App\Story;
use App\Post;
use Illuminate\Database\Eloquent\Model;

class FeedTransformer extends Transformer {

  public static function transform(Model $item, $args = [ ]) {
    $return = array();

    if ($item instanceof Story) {
      $return = StoryTransformer::transform( $item, [ 'level' => 'story' ] );
    }
    if ($item instanceof Post) {
      $return = PostTransformer::transform( $item, [ 'level' => 'posts' ] );
    }

    return $return;
  }
}

和Transformer.php

<?php
namespace App\Transformers;

use Illuminate\Database\Eloquent\Model;

abstract class Transformer {
  public static function transformCollection($items, $args = []) {
    foreach ($items as $item) {
      array_push( $var, static::transform( $item , $args) );
    }
    return $var;
  }

  public static abstract function transform(Model $item,$args = []);
}

所以我不完全确定为什么这会导致我的服务器出错而不在我的localhost开发中

任何人都知道为什么会抛出这个错误?

1 个答案:

答案 0 :(得分:0)

可以在不创建对象实例的情况下调用静态函数,因此不应将静态方法声明为抽象。

如果要声明类必须实现哪些方法,可以使用Interfaces

编辑:否则,您必须在没有Abstract字的情况下声明您的课程。