Maison > cadre php > PensezPHP > le corps du texte

Questions d'entretien PHP 2018 : ThinkPHP

coldplay.xixi
Libérer: 2020-08-10 17:18:56
avant
4034 Les gens l'ont consulté

Questions d'entretien PHP 2018 : ThinkPHP

1. Frameworks PHP courants

Réponse : thinkPHP, yii, ZendFramework, CakePhp, sy

Recommandations de sujets pertinents : Questions et réponses de l'entretien thinkphp 2020 (collection complète)

2. Comment comprendre le fichier à entrée unique dans TP ?

Réponse : ThinkPHP utilise un mode d'entrée unique pour le déploiement et l'accès au projet. Quelle que soit la fonction exécutée, un projet a une entrée unifiée (mais pas nécessairement la seule). Il faut dire que tous les projets partent du fichier d'entrée, et les fichiers d'entrée de tous les projets sont similaires. Le fichier d'entrée comprend principalement :

Définir le chemin du framework, le chemin du projet et le nom du projet (facultatif)

Définir les constantes associées pour le mode débogage et le mode d'exécution (facultatif)

Charger le fichier d'entrée du framework (obligatoire)

3. La superposition MVC dans ThinkPHP est quoi ? (Compréhension)

Réponse : MVC est une méthode de séparation de la couche logique et de la couche de présentation d'une application. ThinkPHP est également basé sur le modèle de conception MVC. MVC n'est qu'un concept abstrait et n'a pas de réglementation particulièrement claire. La superposition MVC dans ThinkPHP se reflète grossièrement dans :

Modèle (M) : La définition du modèle est complétée par la classe Model.

Contrôleur (C) : le contrôleur d'application (classe d'application du contrôleur principal) et le contrôleur d'action assument tous deux le rôle de contrôleur. Le contrôleur d'action complète le contrôle des processus métier, tandis que le contrôleur d'application est responsable du contrôle de la planification.

View (V) : il est composé d'une classe View et d'un fichier modèle. Le modèle est 100 % séparé et peut être prévisualisé et produit indépendamment.

Mais en fait, ThinkPHP ne dépend pas de M ou de V, ce qui signifie qu'il peut fonctionner sans modèle ni vue. Il ne repose même pas sur C. En effet, ThinkPHP dispose également d'un contrôleur principal au-dessus d'Action, le contrôleur d'application, qui est responsable de la planification globale de l'application. En l’absence de C, la vue V doit exister, sinon ce n’est plus une application complète.

En bref, le modèle MVC de ThinkPHP fournit uniquement un moyen de développement agile, plutôt que de s'en tenir au MVC lui-même.

4. Comment optimiser SQL ? (Les étudiants peuvent comprendre l'explication suivante, puis simplement énoncer le sens général selon leur propre compréhension)

Réponse : (1) Choisissez le bon moteur de stockage

Prendre MySQL comme moteur de stockage Par exemple, il comprend deux moteurs de stockage, MyISAM et InnoDB. Chaque moteur présente des avantages et des inconvénients.

MyISAM convient aux applications qui nécessitent un grand nombre de requêtes, mais il n'est pas très bon pour un grand nombre d'opérations d'écriture. Même si vous avez juste besoin de mettre à jour un champ, la table entière sera verrouillée et les autres processus, même le processus de lecture, ne pourront pas fonctionner tant que l'opération de lecture n'est pas terminée. De plus, MyISAM est extrêmement rapide pour les calculs tels que SELECT COUNT(*).

La tendance d'InnoDB sera un moteur de stockage très complexe Pour certaines petites applications, il sera plus lent que MyISAM. Mais il prend en charge le "verrouillage des lignes", ce sera donc mieux lorsqu'il y aura de nombreuses opérations d'écriture. De plus, il prend également en charge des applications plus avancées, telles que les transactions.

(2) Optimiser le type de données du champ

Rappelons un principe, plus la colonne est petite, plus elle sera rapide. Si une table ne comporte que quelques colonnes (comme une table de dictionnaire, une table de configuration), alors nous n'avons aucune raison d'utiliser INT comme clé primaire. Il sera plus économique d'utiliser MEDIUMINT, SMALLINT ou un TINYINT plus petit. Si vous n'avez pas besoin de suivre l'heure, il est préférable d'utiliser DATE plutôt que DATETIME. Bien entendu, vous devez également laisser suffisamment de place à l’expansion.

(3) Ajouter un index au champ de recherche

L'index ne signifie pas nécessairement la clé primaire ou le seul champ. S'il y a un champ dans votre table que vous utiliserez toujours pour la recherche, il est préférable de l'indexer. À moins que le champ que vous souhaitez rechercher soit un champ de texte volumineux, vous devez alors créer un index de texte intégral.

(4) Évitez d'utiliser Select *. Plus les données sont lues dans la base de données, plus la requête deviendra lente. De plus, si votre serveur de base de données et votre serveur WEB sont deux serveurs indépendants, cela augmentera également la charge de transmission réseau. Même si vous souhaitez interroger tous les champs de la table de données, essayez de ne pas utiliser le caractère générique *. Faire bon usage des définitions d'exclusion de champs intégrées peut apporter plus de commodité.

(5) Utilisez ENUM au lieu de VARCHAR

Le type ENUM est très rapide et compact. En fait, il contient un TINYINT, mais il apparaît sous la forme d'une chaîne. De cette façon, il devient tout à fait parfait d'utiliser ce champ pour faire des listes de choix. Par exemple, si les valeurs de champs tels que le sexe, l'origine ethnique, le département et le statut sont limitées et fixes, vous devez utiliser ENUM au lieu de VARCHAR.

(6) Utilisez NOT NULL autant que possible

Sauf si vous avez une raison très particulière d'utiliser des valeurs NULL, vous devez toujours garder vos champs NOT NULL. NULL nécessite en fait un espace supplémentaire et votre programme sera plus complexe lorsque vous effectuerez des comparaisons. Bien sûr, cela ne signifie pas que vous ne pouvez pas utiliser NULL. La réalité est très compliquée et il y aura toujours des situations dans lesquelles vous devrez utiliser des valeurs NULL.

(7) Les tableaux de longueur fixe seront plus rapides

Si tous les champs du tableau sont de « longueur fixe », la table entière sera considérée comme « statique » ou « de longueur fixe » ". Par exemple, la table ne contient aucun champ des types suivants : VARCHAR, TEXT, BLOB. Tant que vous incluez l'un de ces champs, la table n'est plus une "table statique de longueur fixe" et le moteur MySQL la traitera d'une autre manière.

Les tables de longueur fixe amélioreront les performances car MySQL recherchera plus rapidement. Parce que ces longueurs fixes facilitent le calcul du décalage des données suivantes, la lecture sera naturellement plus rapide. Et si le champ n'est pas de longueur fixe, chaque fois que vous souhaitez trouver le suivant, le programme doit trouver la clé primaire. De plus, les tables de longueur fixe sont plus faciles à mettre en cache et à reconstruire. Cependant, le seul effet secondaire est que les champs de longueur fixe gaspillent de l'espace, car les champs de longueur fixe nécessitent beaucoup d'espace, que vous les utilisiez ou non.

5. Comment comprendre le comportement dans l'architecture ThinkPHP 3.0 trois (noyau + comportement + pilote) ?

Réponse : Core + Behaviour + Driver

Abréviation officielle de TP : CBD

Core : C'est le code de base du framework, une chose indispensable TP lui-même. est un framework développé sur la base des idées de MVC.

Comportement (Behavior) : Le comportement joue un rôle décisif dans l'architecture de la nouvelle version de ThinkPHP. Au cœur du système, de nombreux bits d'extension de balise sont définis et chaque position de balise peut exécuter son propre comportement indépendant. à son tour. C'est ainsi que sont nées les extensions comportementales, et de nombreuses fonctions du système sont également complétées par des extensions comportementales intégrées. Toutes les extensions comportementales sont remplaçables et additives, constituant ainsi la base de l'assemblage du cadre sous-jacent.

Pilote : pilote de base de données, pilote de cache, pilote de bibliothèque de balises et pilote de moteur de modèles, ainsi que des extensions de classe externes.

Cadre, c'est-à-dire cadre. En fait, il s'agit d'un produit semi-fini d'une certaine application, d'un ensemble de composants que vous pouvez choisir et utiliser pour compléter votre propre système. Pour faire simple, vous utilisez le décor préparé par les autres et vous jouez. De plus, les frameworks sont généralement des logiciels matures et continuellement mis à jour.

6. Quelle est la configuration conventionnelle ?

Réponse : Configuration conventionnelle Page précédente Page suivante Les conventions sont plus importantes que les configurations. Il s'agit d'une idée importante que le système suit. Le système dispose d'un fichier de configuration de convention intégré (Confconvention.php situé sous. le répertoire système). Selon La plupart des utilisations ont des configurations par défaut pour les paramètres communs. Par conséquent, pour le fichier de configuration du projet d'application, il vous suffit souvent de configurer des paramètres de configuration différents ou nouveaux par rapport à la configuration conventionnelle. Si vous adoptez complètement la configuration par défaut, vous n'avez même pas besoin de définir de fichier de configuration.

Les fichiers de configuration conventionnels seront automatiquement chargés par le système et n'auront pas besoin d'être chargés dans le projet.

7. Qu'est-ce que l'injection SQL ? (Comprendre)

Réponse : L'attaque par injection SQL est l'une des méthodes courantes utilisées par les pirates pour attaquer les bases de données. Certains programmeurs ne jugent pas la légalité des données saisies par l'utilisateur lors de l'écriture du code. L'injecteur peut saisir un code de requête de base de données dans le formulaire et le soumettre. Le programme rassemblera les informations soumises pour générer une instruction SQL complète, et le serveur le sera. trompé. Exécutez la commande SQL malveillante. L'injecteur obtient avec succès certaines données sensibles en fonction des résultats renvoyés par le programme et contrôle même l'ensemble du serveur. Il s'agit d'une injection SQL.

8. Comment ThinkPHP empêche-t-il l'injection SQL ? (Comprendre)

Réponse : (1) Essayez d'utiliser des tableaux pour les conditions de requête, ce qui est un moyen plus sûr

(2) Si vous devez utiliser des conditions de requête de chaîne, utilisez ; le mécanisme de prétraitement ;

(3) Activez la vérification du type de champ de données et vous pouvez forcer la conversion des types de données numériques (la vérification du type de champ est obligatoire depuis la version 3.1)

(4) Utilisez des mécanismes de vérification automatique et de complétion automatique pour personnaliser le filtrage spécifique à l'application

(5) Utilisez des mécanismes de vérification de type de champ, de vérification automatique et de complétion automatique pour éviter la saisie de données malveillantes.

9. Comment activer le mode débogage ? Quels sont les avantages du mode débogage ?

Réponse : L'activation du mode débogage est très simple. Il vous suffit d'ajouter une ligne de code de définition constante au fichier d'entrée :

Après avoir terminé la phase de développement et l'avoir déployé sur. l'environnement de production, il vous suffit de supprimer le mode débogage. Définir le code pour passer en mode déploiement. Une fois le mode de débogage activé, le système chargera d'abord le fichier de configuration de débogage par défaut du système, puis chargera le fichier de configuration de débogage du projet. Les avantages du mode de débogage sont les suivants : activez la journalisation et toutes les informations d'erreur et de débogage seront enregistrées dans. détail pour faciliter le débogage ; désactivez la mise en cache des modèles, les modifications des modèles peuvent prendre effet immédiatement ; enregistrez les journaux SQL pour faciliter l'analyse des champs ; les modifications des champs de la table de données ne sont pas affectées par la mise en cache, vérifiez strictement la casse des fichiers (même sur les plates-formes Windows) ; , vous aidant à découvrir à l'avance les problèmes de déploiement Linux ; peut être pratique Utilisé pour différentes étapes du processus de développement, y compris le développement, les tests et la démonstration, etc., les fichiers de configuration de projet indépendants peuvent être configurés pour différents modes d'application.

10. Quels modes de configuration sont pris en charge dans TP ? Priorité?

Réponse : ThinkPHP a créé son propre mode de configuration hiérarchique unique dans la configuration du projet. Son niveau de configuration se reflète dans : Configuration conventionnelle->Configuration du projet->Configuration du débogage->Configuration du groupe ->. ;Configuration étendue->Configuration dynamique

Ce qui précède est l'ordre de chargement des fichiers de configuration. Étant donné que la configuration suivante écrasera la configuration précédente du même nom (si elle n'est pas efficace), la priorité est de droite. à gauche.

11. Quels sont les modèles d'URL dans TP ? Quelle est la valeur par défaut ?

Réponse : ThinkPHP prend en charge quatre modes d'URL, qui peuvent être définis en définissant le paramètre URL_MODEL, notamment le mode normal, PATHINFO, REWRITE et le mode de compatibilité.

Le mode par défaut est : mode PATHINFO, définissez URL_MODEL sur 1

12. Quelles sont les variables système dans TP ? Comment obtenir les variables système ?

Réponse : Comment obtenir des variables système :

Appelez simplement la méthode suivante en action :

$this->Nom de la méthode ("Nom de la variable", ["Méthode de filtrage"],["Valeur par défaut"])

13. Quelle est la différence entre la fonction D et la fonction M dans le framework ThinkPHP ?

Réponse : La méthode M ne nécessite pas que l'utilisateur définisse une classe de modèle pour chaque table de données lors de l'instanciation du modèle. La méthode D peut détecter automatiquement la classe de modèle. instanciez la classe de modèle personnalisée, si elle n'existe pas, la méthode M sera automatiquement appelée pour instancier la classe de base Model. Dans le même temps, les modèles instanciés ne seront pas instanciés à plusieurs reprises (mode cas unique).

Recommandations d'apprentissage associées : thinkphp

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:wutongketang
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal