Je suis nouveau dans Laravel et j'utilise les espaces de noms PHP en général. Je n'ai rencontré aucun problème jusqu'à ce que je décide de créer un modèle nommé File. Comment pourrais-je utiliser correctement l'espacement des noms pour pouvoir utiliser ma classe de modèle de fichier?
Les fichiers sont app/controllers/FilesController.php
et app/models/File.php
. J'essaie de créer une nouvelle File
dans FilesController.php
.
Le namespacing est assez facile une fois que vous avez compris.
Prenons l'exemple suivant:
app/models/File.php
namespace App\Models;
class File {
public function someMethodThatGetsFiles()
{
}
}
app/controllers/FileController.php
namespace App\Controllers;
use App\Models\File;
class FileController {
public function someMethod()
{
$file = new File();
}
}
Déclarer l'espace de noms:
namespace App\Controllers;
Rappelez-vous qu'une fois que vous avez placé une classe dans un espace de noms pour accéder aux classes intégrées de PHP, vous devez les appeler à partir de l'espace de noms racine. Par exemple: $stdClass = new stdClass();
deviendra $stdClass = new \stdClass();
(voir le \
)
"Importer" d'autres espaces de noms:
use App\Models\File;
Cela vous permet ensuite d'utiliser la classe File
sans le préfixe d'espace de noms.
Sinon, vous pouvez simplement appeler:
$file = new App\Models\File();
Cependant, il est recommandé de le placer en haut de la page dans une instruction use
, car vous pourrez alors voir toutes les dépendances du fichier sans avoir à analyser le code.
Une fois que cela est fait, vous devez exécuter composer dump-autoload
pour mettre à jour la fonction de chargement automatique de Composer afin de prendre en compte vos classes nouvellement ajoutées.
N'oubliez pas que si vous souhaitez accéder au FileController via une URL, vous devez définir un itinéraire et spécifier l'espace de nom complet de la manière suivante:
Route::get('file', 'App\\Controllers\\FileController@someMethod');
Ce qui dirigera toutes les requêtes GET/file vers la someMethod()
du contrôleur
Consultez la documentation de PHP sur Namespaces et Nettut est toujours une bonne ressource avec this article
d'abord, chargez votre classe avec:
$ composer dump-autoload
puis
$file = new File;
// your stuff like:
$file->name = 'thename';
$file->active = true;
$file->save();
Rubrique: Insérer, mettre à jour, supprimer du document de Laravel 4 Eloquent
Pour nommer votre modèle, en haut de votre classe de modèle juste après l’ouverture
Ensuite, lorsque vous appelez des contrôleurs, vous appelez new Whatever\Model;
La première fois, vous devrez probablement effectuer un autodéchargement avec composeur.
jetez un oeil à elle .. espérons pouvoir effacer votre requête ....
<?php
namespace app\controllers;
use yii\web\Controller;
use app\models\users;
class UserController extends Controller{
public function actionIndex()
{
echo "working on .....";
}
}