Laravel 5.1 GeoIP 非静态方法不应被静态调用,假设 $this 来自不兼容的上下文

Posted

技术标签:

【中文标题】Laravel 5.1 GeoIP 非静态方法不应被静态调用,假设 $this 来自不兼容的上下文【英文标题】:Laravel 5.1 GeoIP Non-static method should not be called statically, assuming $this from incompatible context 【发布时间】:2015-11-28 15:49:42 【问题描述】:

我正在使用 Torann\GeoIP 我在尝试时收到此错误

    use Torann\GeoIP\GeoIP;
Route::get('geoip', function() 
    $location = GeoIP::getLocation();
);

但是当我尝试使用时

    $geo = new GeoIP();
$geo - getLogation();

我有这个错误“传递给 Torann\GeoIP\GeoIP::__construct() 的参数 1 必须是 Illuminate\Config\Repository 的实例,没有给出”

所以我缺少 __construct 的论点 ....$config, $session 所以它应该是这样的

$loc = new GeoIP($config, $session);
$loc ->getLocation();

但是我需要给 $config = 什么?和 $session = ?

任何建议都会有所帮助。谢谢

如果有更好的方法来获取 GeoLocation 数据,那就太好了。

【问题讨论】:

【参考方案1】:

您必须声明:

use Torann\GeoIP\GeoIPFacade as GeoIP;

并移动文件 /vendor/torann/geoip/src/config/geoip.php 变成 /config/geoip.php

【讨论】:

您的回答是关于配置 GeoIP 而不是解决问题!

以上是关于Laravel 5.1 GeoIP 非静态方法不应被静态调用,假设 $this 来自不兼容的上下文的主要内容,如果未能解决你的问题,请参考以下文章

为啥在 Eloquent 模型中调用方法时出现“不应静态调用非静态方法”?

Laravel Request::all() 不应该被静态调用

如何使用 laravel 别名调用非静态方法

WebService生成XML文档时出错。不应是类型XXXX。使用XmlInclude或SoapInclude属性静态指定非已知的类型。

严格标准:Joomla 中的非静态方法错误

Laravel 4 的 GeoIP 仅显示示例数据