• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

composer autoload php

0 głosów
109 wizyt
pytanie zadane 30 grudnia 2018 w PHP, Symfony, Zend przez Raptor Mądrala (6,100 p.)

dzien dobry,

 

jak rozumiem aby korzystac z mozliwosci automatycznego ładowania plików .php w porjekcie  skorzystac trzeba ze skladni w composer.json?

"autoload": {
    "psr-4": {
      "MyApp\\": "src/"
    }
  }

 

1 odpowiedź

+1 głos
odpowiedź 30 grudnia 2018 przez HaKIM Szeryf (83,860 p.)

Tak. Dokładniej mówiąc - trzeba napisać odpowiedni config w JSON.

Twój jest nieodpowiedni. Powinno być:

{
 "autoload": {
    "psr-4": {
      "MyApp\\": "src/"
    }
  }
}

https://getcomposer.org/doc/04-schema.md

No i nie zapomnij o:

require __DIR__ . '/vendor/autoload.php';

 

komentarz 31 grudnia 2018 przez Raptor Mądrala (6,100 p.)
require __DIR__ . '/vendor/autoload.php';

ta linijka musi byc w kazdym pliku?
komentarz 31 grudnia 2018 przez HaKIM Szeryf (83,860 p.)
Nie musi. :p

W PHP przeważnie mamy front-controller i to tam znajduje się ta linijka.

Przykład: https://github.com/HaKIMus/slim-template/blob/master/public/index.php#L7
komentarz 31 grudnia 2018 przez Raptor Mądrala (6,100 p.)
edycja 31 grudnia 2018 przez Raptor

kurcze to dziwne, nie dziala mi

Fatal error: Uncaught Error: Class 'nowaKlasa' in /home/usi2/www/index.php:5

to tresc composer.json

{
  "autoload": {
    "psr-4": {
      "MyApp\\": "src/"
    }
  }
}

index.php

<?php

require __DIR__ . '/vendor/autoload.php';

use src\klasowa;

$zm = new nowaKlasa();

echo $zm->zmienna;

echo "index.php <br/>";

Natomiast w katalogu "src" mam plik functions.php a w nim

<?php
namespace klasowa{

class nowaKlasa{

	public $zmienna = "Hello";
}

}

 

Co robie źle? O czymś zapomnialem?

 

oczywiscie zrobilem : 

composer dump-autoload
i dostalem:

Generated autoload files containing 0 classes

komentarz 31 grudnia 2018 przez HaKIM Szeryf (83,860 p.)
{
  "autoload": {
    "files": ["src/functions.php"],
    "psr-4": {
      "MyApp\\": "src/"
    }
  }
}

Tylko nie wiem czy opyla się mieć autoloadera na funkcje... On robi po prostu require na ten plik a to sam możesz zrobić.

komentarz 1 stycznia przez Raptor Mądrala (6,100 p.)
edycja 1 stycznia przez Raptor
zedytowalem poprzedni post, juz mam klase

chyba chodzi o skrukture katalogow, czy uzywajac composera w ten sposób powyższy muszę zachować jakąś strukturę katalogów? ponieważ majac w katalogu src pliki z klasami nie sa one ładowane niestety
komentarz 1 stycznia przez HaKIM Szeryf (83,860 p.)

no bo musisz miec namespace ustalony w composer.json do tego.

czyli

namespace MyApp;

class Joljol2019 {}

a w index np

require __DIR__ . '/vendor/autoload.php';

use MyApp\Joljol2019;

$siemaelo320 = new Joljol2019();

no i nie zapomnij o composer dump-autoload

poza tym ziomeczku jest sylwek! Balowac trza! lecimy lecimy uuuu makarena usune te odpowiedz pozniej 

komentarz 1 stycznia przez Raptor Mądrala (6,100 p.)

szczerze mowiac nie interesuje mnie sylwester

 

tak mam

index.php

<?php
require(__DIR__ . '/vendor/autoload.php');


$obj = new App\Nowa\nowa();

echo "hello index.php";

composer.json

{
"autoload": {
    "psr-4": {
      "App\\": "src"
    }
  }
}

plik klasy

<?php

namespace App\Nowa;

class nowa{
	public $nowa = 'jakas zmienna z klasy';
}

Blad:

Uncaught Error: Class 'App\Nowa\nowa' not found

Autodump pokazuje : Generated autoload files containing 0 classes

komentarz 1 stycznia przez HaKIM Szeryf (83,860 p.)
Zamiast

$obj = new App\Nowa\nowa();

zrób

$obj = new App\Nowa();

No i nie

namespace App\Nowa;

tylko App; Chyba, że class nowa leży w podfolderze src/Nowa.

Oraz nazwy klas rozpoczynamy z dużej litery.

class Nowa {...}

print $obj->nowa;

Te public $nowa  to nie zmienna a właściwość klasy. Tak tylko :P
komentarz 1 stycznia przez Raptor Mądrala (6,100 p.)
taak wlasnie ogarnalem co robilem źle, otóż nie wzialem pod uwage że jak mam plik w folderze to w namespace musze go uwzglednic!
dziekuje za porady i cierpliwosc, dopiero zglebiam tajniki przestreni nazw i composera, dzieki wielkie i dobrego nowego roku :)
komentarz 1 stycznia przez HaKIM Szeryf (83,860 p.)

uuuuuuuuuuuuuuuuu makarena i wzajemnie! yes

Podobne pytania

0 głosów
0 odpowiedzi 54 wizyt
pytanie zadane 8 stycznia w PHP, Symfony, Zend przez kasia101 Początkujący (290 p.)
0 głosów
1 odpowiedź 66 wizyt
pytanie zadane 5 stycznia w PHP, Symfony, Zend przez kasia101 Początkujący (290 p.)
+1 głos
1 odpowiedź 85 wizyt
pytanie zadane 25 maja 2016 w PHP, Symfony, Zend przez marioosu Dyskutant (9,300 p.)
Porady nie od parady
Wynikowy wygląd pytania, odpowiedzi czy komentarza, różni się od tego zaprezentowanego w edytorze postów. Stosuj więc funkcję Podgląd posta znajdującą się pod edytorem, aby upewnić się, czy na pewno ostateczny rezultat ci odpowiada.Podgląd posta

66,393 zapytań

113,148 odpowiedzi

239,530 komentarzy

46,659 pasjonatów

Przeglądających: 314
Pasjonatów: 13 Gości: 301

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...