1

I'm trying to install UserFrosting and i get these errors after loading the main page

[01-Oct-2016 18:28:29 Asia/Jerusalem] PHP 6. Composer\Autoload\includeFile() C:\Server\userfrosting\vendor\composer\ClassLoader.php:301
[01-Oct-2016 18:28:29 Asia/Jerusalem] PHP 5. Composer\Autoload\ClassLoader->loadClass() C:\Server\userfrosting\initialize.php:25 
[01-Oct-2016 18:28:29 Asia/Jerusalem] PHP 4. spl_autoload_call() C:\Server\userfrosting\initialize.php:25 
[01-Oct-2016 18:28:29 Asia/Jerusalem] PHP 3. UserFrosting\UserFrosting->setupGuestEnvironment() C:\Server\userfrosting\initialize.php:193 
[01-Oct-2016 18:28:29 Asia/Jerusalem] PHP 2. require_once() C:\Server\index.php:10 
[01-Oct-2016 18:28:29 Asia/Jerusalem] PHP 1. {main}() C:\Server\index.php:0 
[01-Oct-2016 18:28:29 Asia/Jerusalem] PHP Stack trace: 
[01-Oct-2016 18:28:29 Asia/Jerusalem] PHP Strict standards: Declaration of UserFrosting\User::fresh() should be compatible with Illuminate\Database\Eloquent\Model::fresh(array $with = Array) in C:\Server\userfrosting\models\database\User.php on line 570 

and i can't find the problem thanks for helping

Julian F. Weinert
  • 7,474
  • 7
  • 59
  • 107

1 Answers1

2

The error PHP Strict standards: Declaration of UserFrosting\User::fresh() should be compatible with Illuminate\Database\Eloquent\Model::fresh(array $with = Array) in C:\Server\userfrosting\models\database\User.php on line 570 means that the UserFrosting\User::fresh() method should accept the same types of arguments as Illuminate\Database\Eloquent\Model::fresh(array $with = Array).

The issue can be reproduced with the following code:

test.php

<?php
class A {
  public function test ($arg = 'default value') {
    echo $arg;
  }
}

class B extends A {
  public function test () {
    echo __METHOD__;
  }
}

$b = new B;
$b->test();

Running the script:

$ php test.php
PHP Warning:  Declaration of B::test() should be compatible with A::test($arg = 'default va...') in /home/ruslan/tmp/src/test.php on line 12

To fix it we should just modify test method in the derived class according to the parent method:

class B extends A {
  public function test ($arg = 'X value') {
    echo __METHOD__;
  }
}

Running the script:

$ php test.php 
B::test
Ruslan Osmanov
  • 20,486
  • 7
  • 46
  • 60