Laravel 5.2 Classe ne trouve pas la classe mais est-il avec l'espace de noms
Mise à JOUR 01/26/16 10:30 heure de l'est: Par beaucoup de recherche sur Google, j'ai découvert que j'étais l'incompréhension comment utiliser les espaces de noms et les classes personnalisées. Si quelqu'un d'autre a eu ce problème de lire ce tutoriel: http://www.techigniter.in/tutorials/how-to-add-custom-class-in-laravel-5/
C'est court et très facile à comprendre. Il a aidé à résoudre ce problème et me déplacer le long de ma prochaine erreur... 😀
QUESTION:
La tentative de fraîchement installer Laravel 5 et convertir mon Laravel 4 du code de Laravel 5.
DEMANDE: Merci de m'aider à trouver l'erreur et fournit des instructions détaillées sur la façon de les corriger.
ERREUR:
FatalErrorException dans additionalPCs.php ligne 4:
Classe 'App\Library\AdditionalPCs\additionalComputer' ne trouve pas
Notes: j'ai mis le additionalComputer.php fichier dans son propre répertoire App\Bibliothèque\additionalPCs et directement dans l'App\Libary répertoire. Les deux lieux de produire la même erreur. Je suis en utilisant des espaces de noms. (peut-être mal)
Compositeur.json
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/"
}
},
IndexController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Library\additionalPCs;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class IndexController extends Controller
{
Protected $layout = 'master';
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index()
{
/** Wayne - 03-02-2014 - Moved for loop to a method within its own class. */
$numberofpcs = new additionalPCs();
$addtpcs=$numberofpcs->display();
$this->layout->content = View::make('index')->with('addtpcs', $addtpcs)->with('businesstypelist', businesstype::dropdown())->with('contracttermlist',ContractTerm::dropdown());
}
}
additionalPCs.php
<?php
namespace App\Library;
class additionalPCs extends additionalComputer {
public function display() {
return $this->displayMenu();
}
}
additionalComputer.php (j'ai aussi tenté d'utiliser App\Library\additionalComputer;)
<?php
namespace App\Library;
use App\Library\AdditionalPCs\additionalComputer;
class additionalPCs extends additionalComputer {
public function display() {
return $this->displayMenu();
}
}
OriginalL'auteur scrfix | 2016-01-27
Vous devez vous connecter pour publier un commentaire.
Mise à jour après votre post de mise à jour:
Vous souhaitez utiliser additionalComputer, donc vous devez les importer son espace de noms, comme suit:
(Ajout d'espace de noms à l'importation pour additionalComputer)
Original post:
Vous avez cette ligne dans votre bibliothèque:
À utiliser AdditionalPCs (par exemple, dans votre contrôleur), changement:
À
Important: c'est
new AdditionalPCs()
(voir le débutA
au lieu dea
), il doit être votre nom de classe exactement! C'est une règle générale!Être prudent avec vos noms (cas de la sensibilité). Il est préférable d'utiliser le code de conventions PSR-2: https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md
J'ai ajouté le code de la additionalComputer.php pour le post original.
Ma correction est correcte. Je ne sais pas, mais l'avez-vous mise à jour de tout le code? Je vois toujours le mal de l'espace de noms inclus. 😉 Et à droite,
App\Library\AdditionalPCs\additionalComputer
n'existe pas. additionalComputer est dans le namespace App\de la Bibliothèque, il est doncApp\Library\additionalComputer
.Je suis 100% sûr que c'est une erreur d'utilisateur, et non pas votre suggestion. Il n'y a aucun doute dans mon esprit à ce sujet. 😀 je viens de tomber sur le même problème sur une autre classe et il ne fonctionne pas. Je suis nouvelle marque avec des espaces de noms. J'ai lu sur eux, mais c'est ma première tentative à les utiliser. Désolé, je n'ai pas mis à jour le code sur stackoverflow j'ai seulement ajouté le code supplémentaire pour addtionalComputer.php. Je vais mettre à jour le reste.
J'ai mis à jour l'erreur et le code pour ce que je suis en utilisant dans le post original. Je veux dire Merci beaucoup pour prendre le temps de regarder ce fil.
OriginalL'auteur schellingerht
Noms de chaque classe est le conteneur du répertoire de la classe de ne pas le fichier de la classe elle-même.
Dans votre additionalPCs.php fichier de l'espace de noms, de se débarrasser de \AdditionalPCs, il faut juste être:
Si il était utile de vous, upvote il. C'est une responsabilité et non un privilège pour upvote ouvrages utiles
OriginalL'auteur Makan