Laravel Symfony\Component\Debug\Exception\FatalThrowableError

0

Witam

mam problem w pewnym projekcie przy uruchomieniu : ****php artisan bookingApp:calculateDistanceToOffice ****wywala mi ciagle bład:

 Symfony\Component\Debug\Exception\FatalThrowableError  : Class 'Proexe\BookingApp\Utilities\DistanceCalculator' not found

  at C:\xampp\htdocs\php-master\app\Console\Commands\CalculateDistanceToOffice.php:41
    37|          *
    38|          * @return mixed
    39|          */
    40|         public function handle() {
  > 41|                 $distanceCalculator = new DistanceCalculator();
    42|                 $offices = OfficeModel::all()->toArray();
    43|
    44|                 $lat                = $this->ask( 'Enter Lat:', '14.12232322' );
    45|                 $lng                = $this->ask( 'Enter Lng:', '8.12232322' );

  Exception trace:

  1   App\Console\Commands\CalculateDistanceToOffice::handle()
      C:\xampp\htdocs\php-master\vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php:29

  2   call_user_func_array([])
      C:\xampp\htdocs\php-master\vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php:29

  Please use the argument -v to see more details.

jak mogę to naprawić zeby działało oraz seed bazy php artisan db:seed
composer dump-autoload ani composer update niestety nie naprawiają problemu

czy trzeba pozmieniać jakoś tą klase?

2

Masz w Kernel zarejestrowaną tą klasę?
https://laravel.com/docs/5.8/artisan#registering-commands

0

to jak mam to zapisac w Kernel.php ponizej zrobilem tak

 protected $commands = [
        commands\bookingApp:calculateDistanceToOffice::class
    ];

niby wg dokumentacji. Ale nie działa... Coś zle zapisuje caly czas. Albo cos jeszcze trzeba zrobic zeby zarejestrowac ta komende i klase poprawnie

0

Pokaż kod tej komendy jak możesz.

0

wyświetliłem sobie php artisan niestety wychodzi na to że ona jest nie zarejestrowana mam inne komendy w bookingApp a tej nie ma.

Tak jest zapisana w Console/Commands CalculateDistanceToOffice.php

<?php

namespace App\Console\Commands;


use Illuminate\Console\Command;
use Proexe\BookingApp\Offices\Models\OfficeModel;
use Proexe\BookingApp\Utilities\DistanceCalculator;


class CalculateDistanceToOffice extends Command {

	/**
	 * The name and signature of the console command.
	 *
	 * @var string
	 */
	protected $signature = 'bookingApp:calculateDistanceToOffice';

	/**
	 * The console command description.
	 *
	 * @var string
	 */
	protected $description = 'Calculates distance to office';

	/**
	 * Create a new command instance.
	 *
	 * @return void
	 */
	public function __construct() {
		parent::__construct();
	}

	/**
	 * Execute the console command.
	 *
	 * @return mixed
	 */
	public function handle() {
		$distanceCalculator = new DistanceCalculator();
		$offices = OfficeModel::all()->toArray();

		$lat                = $this->ask( 'Enter Lat:', '14.12232322' );
		$lng                = $this->ask( 'Enter Lng:', '8.12232322' );

		foreach ($offices  as $office ) {

			$this->line( 'Distance to ' . $office['name']. ': ' . $distanceCalculator->calculate(
					[ $lat, $lng ],
					[ $office['lat'], $office['lng'] ],
					'm' )
			);
		}

		$this->line( 'Closest office: ' . $distanceCalculator->findClosestOffice( [ $lat, $lng ], $offices ) );
	}
}

jak probuje ja wywołac to wali mi 40 lini błedem

0

Hmm. No chyba Cię wprowadziłem w błąd.
Sprawdź jak komukikat mówi ścieżkę tej klasy:
Proexe\BookingApp\Utilities\DistanceCalculator
Na pewno nie ma literówki itp.?

0

Po co konstruktor, który nic nie robi? Wywal to, tylko zaciemnia kod.

0

nazwy z tego co widze chyba że jestem już ślepy są dobre. wywaliłem ten konstruktor dalej ten sam bład. Moze trzeba jakos zarejestrować inaczej ta artisan metode.

0
Łapa_krk napisał(a):

nazwy z tego co widze chyba że jestem już ślepy są dobre. wywaliłem ten konstruktor dalej ten sam bład. Moze trzeba jakos zarejestrować inaczej ta artisan metode.

No bo konstruktor nie jest błędem, to tylko nadmiarowy kod.

Pisze jak byk, że klasa nie została znaleziona, to sprawdź po prostu nazewnictwo klasy.

0

Tą klasę
Proexe\BookingApp\Utilities\DistanceCalculator
Pisałeś sam czy to jakaś biblioteka?
Nie wiem z jakiego IDE korzystasz ale tak z głupia używając CTRL jesteś w stanie się wklikać w nią? Czyli czy IDE rozpoznaje ścieżki poprawnie.
W środku tej klasy nazwa jest zgodna z nazwą pliku?

0

wklejam to co mam w Proexe\BookingApp\ Utilities\DistanceCalculator.php

<?php

 

namespace Proexe\BookingApp\Utilities;



class DistanceCalculator {

	/**
	 * @param array  $from
	 * @param array  $to
	 * @param string $unit - m, km
	 *
	 * @return mixed
	 */

	public function calculate( $from,  $to,  $unit = 'm' ) {
		var_dump($from, $to, $unit);
		//return $distance;
	}

	/**
	 * @param array $from
	 * @param array $offices
	 *
	 * @return array
	 */
	public function findClosestOffice( $from, $offices ) {

		//return $office;
	}

}
0

Panowie a po co jest w Kernel.php

protected $commands = [
            //
    ];

przy rejestracji metod tez tam sie wrzuca czy nie trzeba?

0

W starszych wersjach nie było autorejesteacji o ile pamiętam tylko trzeba było dodać komendę na liście. Jak masz Laravel 7 to chyba już jest automatycznie rejestrowana z katalogu Commands

0

dobra jednak po wyświetleniu php artisan metoda jest wpisana. Takze chyba jest zarejestrowana poprawnie. Czyli z jakiś powodów nie ładuje tej klasy...

1 użytkowników online, w tym zalogowanych: 0, gości: 1