Maison > Article > développement back-end > Collection de questions d'entretien PHP 2021
1. Partie de base de PHP
1. L'un des avantages majeurs du langage PHP est le multiplateforme. ?
La combinaison optimale de l'environnement d'exécution de PHP est Apache+MySQL+PHP. Cet environnement d'exécution peut être configuré sur différents systèmes d'exploitation (tels que Windows, Linux, etc.) et n'est donc pas limité par le système d'exploitation. cela s'appelle multiplateforme
2. Combien existe-t-il de méthodes de soumission de données dans le développement WEB ? Quelle est la différence ? Quelle méthode Baidu utilise-t-il ?
Obtenir et publier deux méthodes
Différence :
(1) Visibilité de l'URL : les paramètres d'URL de la méthode d'obtention sont visibles, post est invisible
(2) Mise en cache : la méthode get peut être mise en cache, mais la méthode post ne peut pas être mise en cache.
(3) Taille des données de transmission : La taille générale des données de transmission de get ne dépasse pas 2k-4k (selon le navigateur, la limite est différente, mais la différence n'est pas grande) ; les données de transmission de la demande sont configurées selon php.ini. Les paramètres du fichier peuvent également être infiniment grands.
(4) Transmission de données : la méthode get est utilisée pour transmettre les paramètres via l'épissage de la barre d'adresse URL, et la méthode post est utilisée pour transmettre les données via le corps.
Recommandations :
1. La méthode get est moins sécurisée que la méthode post. Elle contient des informations confidentielles et il est recommandé d'utiliser la méthode de soumission des données post ; 🎜>
2. Il est recommandé d'utiliser la méthode Get pour la requête de données ; il est recommandé d'utiliser la méthode Post pour ajouter, modifier ou supprimer des données La méthode get utilisée par Baidu, car elle est utilisée. peut être vu à partir de son URL 3. Maître Quels frameworks, moteurs de modèles, systèmes, etc. existe-t-il pour PHP Framework : Il existe de nombreux frameworks, tels que CI, Yii, Laravel ? , etc. Ce que nous avons appris, c'est thinkphpMoteur de modèles : il y en a aussi beaucoup, dans le manuel, ce que nous avons appris, c'est le système smarty : il y en a beaucoup, comme celui de Kangsheng produits (uchome, supesite, discuzX, etc.), système Empire, DEDE (Dream Weaver), ecshop, etc., nous avons appris que j'ai réussi DEDECMS et Ecshop4. Qu'est-ce que le web technologies front-end que vous maîtrisez ?
Maîtrise de la mise en page Web p+CSS, JavaScript, du framework jQuery, du traitement d'images Photoshop5.Quels sont les avantages d'AJAX ?
ajax est une technologie de transmission asynchrone qui peut être implémentée via javascript ou le framework JQuery pour obtenir un rafraîchissement partiel, ce qui réduit la pression sur le serveur et améliore l'expérience utilisateur.6. La sécurité est cruciale pour un programme. Veuillez me dire à quels mécanismes de sécurité il faut prêter attention pendant le développement ?
(1) Utilisez le code de vérification pour éviter l'inondation de la machine d'enregistrement. (2) Utilisez le prétraitement, la liaison des paramètres, le filtrage des paramètres et l'échappement pour empêcher l'injection SQL (3) Utilisez un jeton pour empêcher la soumission à distance et utilisez un jeton pour vérifier l'état de connexion.7. Dans le développement du programme, comment améliorer l'efficacité opérationnelle du programme ?
(1) Optimisez les instructions SQL, essayez de ne pas utiliser select * dans les instructions de requête, utilisez quel champ pour vérifier quel champ ; utilisez moins de sous-requêtes et peut être remplacé par des requêtes moins floues ; (2) Créez un index dans la table de données. (3) Générer un cache pour les données fréquemment utilisées dans le programme (comme utiliser redis pour mettre en cache les données, comme utiliser ob pour statiquer des pages dynamiques, etc.). (4) Réalisez une réplication maître-esclave de MySQL et séparez la lecture et l'écriture. (Améliorez l'efficacité d'exécution de MySQL et la vitesse des requêtes) (5) Utilisez nginx pour l'équilibrage de charge. (Répartir uniformément la pression d'accès aux serveurs polymorphes)8. PHP peut-il être utilisé avec d'autres bases de données ?
PHP est la meilleure combinaison avec la base de données MYSQL. Bien entendu, PHP peut également être utilisé avec d'autres bases de données, telles que PostgreSql, SqlServer, Oracle, SqlLite, etc.9. De nos jours, la structure à trois couches MVC est souvent utilisée en programmation. Quels sont les trois couches de MVC ?
Les trois couches de MVC font référence à : le modèle commercial, la vue et le contrôleur. La couche contrôleur appelle le modèle pour traiter les données, puis mappe les données à la couche de vue pour l'affichage. Les avantages sont : ① La réutilisabilité du code peut être obtenue pour éviter la redondance du code ②Séparation des codes M et V, de sorte que le même programme puisse être utilisé Différentes formes de expression10. Compréhension du format de données json ?
JSON (JavaScript Object Notation) est un format d'échange de données léger. Le format de données json est fixe et peut être utilisé pour le transfert de données dans plusieurs langues. La fonction en PHP qui gère le format json est json_decode(string $json [, bool $assoc]), qui accepte une chaîne au format JSON et la convertit en variable PHP. Le paramètre json est le format de chaîne json. chaîne à décoder. assoc renverra un tableau au lieu d'un objet lorsque ce paramètre est TRUE ; Json_encode : convertit les variables PHP au format json.11. Quelles sont les différences entre Print, echo et print_r ?
(1) echo et print peuvent effectuer une sortie. La différence est que echo n'est pas une fonction et n'a pas de valeur de retour, tandis que print est une fonction avec une valeur de retour, donc relativement parlant, si vous produisez simplement echo, ce sera plus rapide, tandis que print_r est généralement utilisé pour imprimer des informations sur les variables, souvent utilisées dans le débogage. (2) print consiste à imprimer une chaîne (3) print_r consiste à imprimer un type composite tel qu'un objet tableau12. différence entre SESSION et COOKIE ?
(1) Emplacement de stockage : la session est stockée dans le serveur, le cookie est stocké dans le navigateur(2) Sécurité : la sécurité de la session est supérieure à celle des cookies.
(3) La session est un « service de session » et le service doit être activé lors de son utilisation. Les cookies n'ont pas besoin d'être activés. activé, vous pouvez l'utiliser directement
13 Fonctions couramment utilisées pour traiter les tableaux en PHP ? (Concentrez-vous sur les « paramètres » et la « valeur de retour » de la fonction)
(1) array() crée un tableau
(2) in_array() détermine si l'élément est dans le tableau
(3) count() renvoie le nombre d'éléments dans le tableau
(4) array_merge() fusionne plusieurs tableaux en un seul tableau
(5 ) array_diff() comparaison Différence de deux tableaux ou plus
(6) array_intersect() Obtient l'intersection de deux tableaux ou plus
(7) array_keys() Obtient la liste des clés du tableau
(8)array_values() Obtenez la liste des valeurs du tableau
(9)array_unique() Supprimez les valeurs en double dans le tableau
(10)array_push( ) va un ou plusieurs Insérer l'élément à la fin du tableau (push)
(11) array_pop() Pop et retourner le dernier élément du tableau tableau (push)
(12 ) array_walk() Utilisation définie par l'utilisateur La fonction effectue un traitement de rappel sur chaque élément du tableau
14. Quelles sont les fonctions courantes utilisées pour traiter les chaînes en PHP ? (Concentrez-vous sur les « paramètres » et la « valeur de retour » de la fonction)
(1) trim() supprime les caractères vides et autres caractères des deux côtés de la chaîne
; (2 ) strlen() Obtenez la longueur de la chaîne
(3) mb_strlen() Obtenez la longueur de la chaîne (le codage des caractères peut être spécifié, calculez la longueur pour les chaînes chinoises)
(4) substr() Renvoie une partie de la chaîne
(5) str_replace() Remplacement de sous-chaîne
(6) str_repeat () Répète une chaîne
(7 ) is_string() Vérifiez si la variable est une chaîne ;
(8) str_shuffle () mélange aléatoirement une chaîne
(9) sprintf() renvoie une chaîne générée en fonction de la chaîne formatée ( habituellement utilisé Après avoir obtenu le nom de la table de données après la division de la table)
(10) strstr() Trouver la première occurrence de la chaîne
(11) addlashes Utiliser des barres obliques inverses pour citer la chaîne
15. Fonctions couramment utilisées en PHP pour traiter le temps ? (Concentrez-vous sur les « paramètres » et la « valeur de retour » de la fonction)
(1) date() Formatez une heure/date locale.
(2) getdate() Obtenez des informations sur la date/heure.
(3) date_default_timezone_set() définit le fuseau horaire par défaut.
(4) date_default_timezone_get() renvoie le fuseau horaire par défaut.
(5) mktime() renvoie l'horodatage Unix d'une date.
(6) strtotime() Analyse la description de la date et de l'heure de n'importe quelle chaîne dans un horodatage Unix
(7) strftime() Formate l'heure/la date locale en fonction des paramètres régionaux
16. Fonctions couramment utilisées par PHP pour traiter les bases de données ? (Concentrez-vous sur les 'paramètres' et la 'valeur de retour' de la fonction)
Veuillez vous référer au manuel PHP et lisez-le attentivement
. 17. Fichiers d'opération PHP Fonctions couramment utilisées ? (Concentrez-vous sur les 'paramètres' et la 'valeur de retour' de la fonction)
(1) Ouvrez le fichier fopen()
(2) Lisez le fichier fgets(); Remarque : file_get_contents () lit également le fichier
(3) écrit le fichier fwrite(); Remarque : file_put_contents() peut également écrire le fichier
(4) ferme le descripteur de fichier fclose( )
(5) Déplacer/renommer le fichier rename()
(6) Copier la copie du fichier()
(7) Créer un fichier vim ou toucher
(8) Supprimer le fichier unlink()
(9) Obtenir l'heure du dernier accès au fichier fileatime()
(10) Obtenir l'heure de la dernière modification du fichier filemtime()
(11) Obtenez la taille du fichier filesize()
(12) Obtenez le type de fichier filetype()
(13) Obtenez les détails du fichier state()
(14) Jugement Est-ce un répertoire ? is_dir()
18. Fonctions courantes utilisées par PHP pour faire fonctionner les répertoires (dossiers) ? (Concentrez-vous sur les 'paramètres' et la 'valeur de retour' de la fonction)
(1) Ouvrez le répertoire opendir()
(2) Lisez le répertoire readdir()
(3) Supprimer le répertoire rmdir()
(4) Fermer le handle du répertoire closeir()
(5) Créer le répertoire mkdir()
(6 ) Chemin de retour La partie répertoire dans dirname()
(7) Récupère le répertoire de travail actuel getcwd()
(8) Répertorie les fichiers et répertoires dans le chemin spécifié scandir()
2. Partie base de données
1. Quels sont les produits courants du système de gestion de bases de données relationnelles ?
Réponse : Oracle, SQL Server, MySQL, Sybase, DB2, Access, etc.
2. Quelles parties le langage SQL comprend-il ? Quels sont les mots-clés d’action pour chaque section ?
Réponse : Le langage SQL comprend quatre parties : la définition des données (DDL), la manipulation des données (DML), le contrôle des données (DCL) et la requête de données (DQL).
Définition des données : créer une table, modifier une table, supprimer une table, créer un index, etc.
Manipulation des données : sélectionner, insérer, mettre à jour, supprimer,
Contrôle des données : accorder, révoquer
Requête de données : sélectionner
3. Quelles sont les contraintes d'intégrité ?
L'intégrité des données fait référence à l'exactitude et à la fiabilité des données.
Comprend :
(1) Intégrité de l'entité : stipule que chaque ligne du tableau est une entité unique dans le tableau.
(2) Intégrité du domaine : cela signifie que les colonnes du tableau doivent répondre à certaines contraintes de type de données, qui incluent la plage de valeurs, la précision et d'autres réglementations.
(3) Intégrité référentielle : signifie que les données de la clé primaire et de la clé étrangère des deux tables doivent être cohérentes, garantissant la cohérence des données entre les tables et empêchant la perte de données ou la propagation de données dénuées de sens. bases de données.
(4) Intégrité définie par l'utilisateur : différents systèmes de bases de données relationnelles nécessitent souvent des contraintes particulières en fonction de leurs environnements d'application. L'intégrité définie par l'utilisateur est une contrainte pour une base de données relationnelle spécifique, qui reflète les exigences sémantiques auxquelles une application spécifique doit répondre.
4. Qu'est-ce qu'une transaction ? et ses caractéristiques ?
Transaction : Il s'agit d'une série d'opérations de base de données et de l'unité logique de base des applications de base de données.
Caractéristiques :
(1) Atomicité : c'est-à-dire indivisibilité, soit toutes les transactions sont exécutées, soit aucune n'est exécutée.
(2) Cohérence ou cordabilité. L'exécution d'une transaction convertit la base de données d'un état correct à un autre état correct
(3) Isolement. Avant que la transaction ne soit correctement validée, toute modification apportée aux données effectuée par la transaction ne peut être transmise à aucune autre transaction,
(4) Persistance. Une fois qu'une transaction est soumise correctement, ses résultats seront enregistrés de manière permanente dans la base de données. Même s'il y a d'autres échecs après la soumission de la transaction, les résultats du traitement de la transaction seront enregistrés.
Compréhension simple : toutes les opérations d'une transaction réussissent ou échouent.
5. Qu'est-ce qu'un cadenas ?
La base de données est une ressource partagée utilisée par plusieurs utilisateurs. Lorsque plusieurs utilisateurs accèdent simultanément aux données, plusieurs transactions accèdent simultanément aux mêmes données dans la base de données. Si les opérations simultanées ne sont pas contrôlées, des données incorrectes peuvent être lues et stockées, détruisant la cohérence de la base de données.
Le verrouillage est une technologie très importante pour contrôler la concurrence des bases de données. Lorsqu'une transaction opère sur un objet de données, elle envoie d'abord une demande au système pour le verrouiller. Après le verrouillage, la transaction a un certain contrôle sur l'objet de données. Avant que la transaction ne libère le verrou, les autres transactions ne peuvent pas mettre à jour l'objet de données.
Types de verrous de base : les verrous incluent les verrous au niveau des lignes et les verrous au niveau des tables
6. Qu'est-ce qu'une vue ? Qu'est-ce qu'un curseur ?
Une vue est une table virtuelle qui a les mêmes fonctions qu'une table physique. Vous pouvez ajouter, modifier, interroger et utiliser des vues. Une vue est généralement un sous-ensemble de lignes ou de colonnes d'une ou de plusieurs tables. Les modifications apportées à la vue n'affectent pas les tables sous-jacentes. Cela nous permet d'obtenir plus facilement des données que les requêtes multi-tables.
Curseur : il traite efficacement l'ensemble des résultats de la requête comme une unité. Le curseur peut être positionné sur une ligne spécifique de la cellule pour récupérer une ou plusieurs lignes de la ligne actuelle dans le jeu de résultats. Vous pouvez modifier la ligne actuelle du jeu de résultats. Les curseurs ne sont généralement pas utilisés, mais lorsque les données doivent être traitées une par une, les curseurs sont très importants.
7. Qu'est-ce qu'une procédure stockée ? Comment appeler ?
Une procédure stockée est une instruction SQL précompilée. L'avantage est qu'elle permet une conception modulaire, ce qui signifie qu'elle ne doit être créée qu'une seule fois et peut être appelée plusieurs fois dans le programme ultérieurement. Si une certaine opération nécessite plusieurs exécutions de SQL, l'utilisation de procédures stockées est plus rapide que l'exécution de simples instructions SQL. Les procédures stockées peuvent être appelées à l'aide d'un objet de commande.
8. Quel est le rôle de l'index ? Et quels sont ses avantages et ses inconvénients ?
Un index est une table de requête spéciale que le moteur de recherche de base de données peut utiliser pour accélérer la récupération des données. C'est très similaire à la table des matières d'un livre dans la vraie vie. Vous pouvez trouver les données souhaitées sans interroger l'intégralité du livre. Les index peuvent être uniques et la création d'un index vous permet de spécifier une seule ou plusieurs colonnes.
L'inconvénient est que cela ralentit la saisie des données et augmente également la taille de la base de données.
Comment comprendre les trois paradigmes de manière populaire ?
Première forme normale : 1NF est une contrainte atomique sur les attributs, qui nécessite que les attributs soient atomiques et ne peuvent pas être décomposés.
Deuxième forme normale : 2NF est une contrainte unique sur les enregistrements, exiger que l'enregistrement ait un identifiant unique, c'est-à-dire l'unicité de l'entité
Troisième forme normale : 3NF est une contrainte sur la redondance des champs, c'est-à-dire qu'aucun champ ne peut être dérivé d'autres champs, et il nécessite que le champ ne soit pas redondant. .
Qu'est-ce qu'une table de base ? Qu'est-ce qu'une vue ?
La table de base est une table qui existe de manière indépendante. En SQL, une relation correspond à une table.
Une vue est une table dérivée d'une ou plusieurs tables de base. La vue elle-même n'est pas stockée indépendamment dans la base de données, c'est une table virtuelle
Décrivez les avantages des vues ?
(1) Les vues peuvent simplifier les opérations des utilisateurs
(2) Les vues permettent aux utilisateurs de visualiser les mêmes données sous plusieurs angles
(3) Les vues sont les la base de données offre un certain degré d'indépendance logique ;
(4) Les vues peuvent assurer la protection des données confidentielles.
Que signifie NULL ?
La valeur NULL représente INCONNU : elle ne représente pas "" (chaîne vide).
Toute comparaison avec une valeur NULL produira une valeur NULL.
Vous ne pouvez comparer aucune valeur à une valeur NULL et vous attendre logiquement à obtenir une réponse.
Utilisez IS NULL pour un jugement NULL
Quelle est la différence entre la clé primaire, la clé étrangère et l'index ?
La différence entre la clé primaire, la clé étrangère et l'index
Définition :
Clé primaire – identifie de manière unique un enregistrement, ne peut pas être dupliquée et ne peut pas être vide
Étrangère key – clé étrangère de la table La clé est la clé primaire d'une autre table. La clé étrangère peut avoir des doublons ou des valeurs nulles
Index – le champ n'a pas de valeurs en double, mais peut avoir une valeur nulle. :
Clé primaire - utilisée pour garantir l'intégrité des données
clé étrangère - utilisée pour établir des connexions avec d'autres tables
index - sert à améliorer la vitesse de tri des requêtes
Numéro :
clé primaire - là ne peut être qu'une seule clé primaire
clé étrangère - Une table peut avoir plusieurs clés étrangères
index - une table peut avoir plusieurs index uniques
Que pouvez-vous utiliser pour vous assurer que les champs dans le tableau n'accepte que les valeurs dans une plage spécifique ?
Vérifiez la limite, qui est définie dans la table de la base de données et est utilisée pour limiter la valeur saisie dans cette colonne.Dites-moi quelles sont les méthodes disponibles pour optimiser les instructions SQL ? (Choisissez-en quelques-uns)
(1) Dans la clause Where : la connexion entre les tables Where doit être écrite avant les autres conditions Where et les conditions qui peuvent filtrer le nombre maximum d'enregistrements doivent être écrites. dans le sous Où À la fin de la phrase.HAVING dernier. (2) Remplacez IN par EXISTS et NOT IN par NOT EXISTS. (3) Évitez d'utiliser des calculs sur les colonnes d'index (4) Évitez d'utiliser IS NULL et IS NOT NULL sur les colonnes d'index (5) Optimisez les requêtes, vous devriez essayer pour éviter les analyses de table complètes, envisagez d'abord de créer des index sur les colonnes impliquées dans Where et Trier par. (6) Essayez d'éviter de porter des jugements de valeur nulle sur les champs de la clause Where, sinon le moteur abandonnera l'utilisation de l'index et effectuera une analyse complète de la table (7) Essayez d'éviter en utilisant la clause Where Effectuer des opérations d'expression sur les champs dans les clauses entraînera l'abandon par le moteur de l'utilisation des index et une analyse complète de la tableQuelle est la différence entre « sous-requête corrélée » et « non corrélée » sous-requête' dans une instruction SQL ?
(1) La sous-requête non corrélée est une sous-requête indépendante de la requête externe. La sous-requête est exécutée une fois au total et la valeur est transmise à la requête externe après l'exécution. (2) L'exécution de la sous-requête concernée dépend des données de la requête externe. Lorsque la requête externe exécute une ligne, la sous-requête est exécutée une fois. Les sous-requêtes non corrélées sont donc plus efficaces que les sous-requêtes corréléesQuelle est la différence entre char et varchar ?
char est un type de longueur fixe et varchar est un type de longueur variable. Différence : Dans une colonne de données de type char(M), chaque valeur occupe M octets. Si une longueur est inférieure à M, MySQL utilisera des espaces à sa droite. . (Les espaces remplis seront supprimés lors de l’opération de recherche). Dans la colonne de données de type varchar(M), chaque valeur n'occupe que juste assez d'octets plus un octet pour enregistrer sa longueur (c'est-à-dire que la longueur totale est de L+1 octets).Moteur de stockage MySQL, la différence entre myisam et innodb.
MyISAM est un moteur de stockage non transactionnel ; adapté aux applications avec des requêtes fréquentes ; aucun blocage ne prend en charge les transactions ; Convient aux petites données et aux petites concurrencesInnodb est un moteur de stockage qui prend en charge les transactions ; convient aux applications avec de nombreuses opérations d'insertion et de mise à jour si la conception est raisonnable, des verrouillages de lignes (la plus grande différence réside dans le niveau ; du verrou) ; adapté aux données volumineuses et à la concurrence massive.Quels sont les types de tables de données
MyISAM, InnoDB, HEAP, BOB, ARCHIVE, CSV, etc. MyISAM : Mature, stable, facile à gérer, rapide à lire. Certaines fonctions ne prennent pas en charge (transactions, etc.) les verrous au niveau de la table. InnoDB : prend en charge les transactions, les clés étrangères et d'autres fonctionnalités, ainsi que le verrouillage des lignes de données. Il prend beaucoup de place et ne prend pas en charge l'indexation en texte intégral, etc.La base de données MySQL est utilisée comme stockage du système de publication. Plus de 50 000 entrées sont ajoutées en une journée. L'exploitation et la maintenance devraient durer trois ans.
(1) Concevez une structure de base de données bien conçue, autorisez une redondance partielle des données et essayez d'éviter les requêtes de jointure pour améliorer l'efficacité. (2) Sélectionnez le type de données de champ de table et le moteur de stockage appropriés, et ajoutez des index de manière appropriée. (3) Effectuez la séparation lecture-écriture de la réplication maître-esclave MySQL. (4) Divisez la table de données en tables pour réduire la quantité de données dans une seule table et améliorer la vitesse des requêtes. (5) Ajouter un mécanisme de mise en cache, tel que redis, memcached, etc. (6) Pour les pages qui ne changent pas fréquemment, générez des pages statiques (telles que le cache ob). (7) Écrivez du SQL efficace. Par exemple, SELECT * FROM TABEL est remplacé par SELECT field_1, field_2, field_3 FROM TABLE.Pour les sites Web à fort trafic, quelle méthode utilisez-vous pour résoudre le problème des statistiques de visites de pages ?
(1) Confirmez si le serveur peut prendre en charge le trafic actuel. (2) Optimiser l'accès à la base de données. (3) Interdire l'accès externe aux liens (hotlinking), comme le hotlinking d'images. (4) Téléchargement du fichier de contrôle. (5) Effectuez un équilibrage de charge et utilisez différents hôtes pour décharger le trafic. (6) Utiliser un logiciel de statistiques de navigation pour comprendre le nombre de visites et effectuer une optimisation ciblée.3. Partie orientée objet
1. Qu'est-ce que l'orientation objet (Répondre avec compréhension)
Objet -orienté est un type de pensée basé sur l'orientation processus, ce qui signifie que l'orientation objet réalise des fonctions à travers des objets, encapsule des fonctions dans des objets et permet aux objets d'implémenter des détails spécifiques.L'orientation objet présente trois caractéristiques majeures : l'encapsulation, l'héritage et le polymorphisme.
Les langages OO purs actuels sont principalement Java et C# et C++ supportent également OO qui est orienté processus.
2. Décrivez brièvement les droits d'accès des modificateurs privés, protégés et publics.
privé : membre privé, accessible uniquement à l'intérieur de la classe.
protected : membres protégés, accessibles au sein de la classe et des classes héritées.
public : membres publics, entièrement publics, aucune restriction d'accès.
3. Quelle est la différence entre tas et pile ?
La pile est un espace mémoire alloué lors de la compilation, la taille de la pile doit donc être clairement définie dans votre code
Le tas est une mémoire allouée dynamiquement lors de l'exécution du programme ; , vous pouvez déterminer la taille de la mémoire tas à allouer en fonction des conditions d'exécution du programme.
4. Les principales différences entre XML et HTML
Différentes exigences grammaticales :
(1) En HTML, il n'est pas sensible à la casse, en XML Distinction stricte.
(2) En HTML, parfois ce n'est pas strict. Si le contexte montre clairement où se termine la clé de paragraphe ou de liste, vous pouvez omettre
ou des balises de fermeture similaires. En XML, il s'agit d'une structure arborescente stricte, et la balise de fermeture ne doit pas être omise.
(3) En XML, les éléments qui ont une seule balise sans balise de fermeture correspondante doivent se terminer par un caractère /. De cette façon, l'analyseur sait qu'il ne doit pas rechercher la balise de fermeture.
(4) En XML, les valeurs d'attribut doivent être placées entre guillemets. En HTML, les guillemets sont facultatifs.
(5) En HTML, vous pouvez avoir des noms d'attributs sans valeurs. En XML, tous les attributs doivent avoir des valeurs correspondantes.
(6) Dans les documents XML, les parties vides ne seront pas automatiquement supprimées par l'analyseur mais le HTML filtre les espaces vides. Les balises
sont différentes :
(1) HTML utilise des balises inhérentes ; XML n'a pas de balises inhérentes.
(2) Les balises HTML sont prédéfinies ; les balises XML sont gratuites, personnalisables et extensibles.
Différentes fonctions :
(1) HTML est utilisé pour afficher les données ; XML est utilisé pour décrire les données et stocker les données, il peut donc être utilisé comme support de persistance ! HTML combine les données et l'affichage et affiche les données sur la page ; XML sépare les données et l'affichage. XML est conçu pour décrire des données, en mettant l'accent sur leur contenu. HTML a été conçu pour afficher des données, l'accent étant mis sur l'apparence des données.
(2) XML ne remplace pas HTML et HTML sont deux langages aux usages différents. XML n'est pas destiné à remplacer HTML ; en fait, XML peut être considéré comme un complément à HTML. Les objectifs de XML et HTML sont différents. L'objectif de conception de HTML est d'afficher des données et de se concentrer sur leur apparence, tandis que l'objectif de conception de XML est de décrire les données et de se concentrer sur leur contenu.
(3) La meilleure description de XML pourrait être : XML est un outil multiplateforme, indépendant du logiciel et du matériel, pour le traitement et la transmission d'informations.
(4) XML sera omniprésent dans le futur. XML deviendra l'outil le plus courant pour le traitement et la transmission de données.
5. Quelles sont les caractéristiques de l'orientation objet
Inclut principalement l'encapsulation, l'héritage et le polymorphisme. S'il s'agit de 4 aspects, ajoutez : abstraction.
Encapsulation :
L'encapsulation est la base pour garantir que les composants logiciels ont une excellente modularité. L'objectif de l'encapsulation est d'obtenir une cohésion élevée et un faible couplage des composants logiciels et d'éviter les changements causés par l'interdépendance des programmes.
Héritage :
Lors de la définition et de l'implémentation d'une classe, vous pouvez le faire sur la base d'une classe existante, et utiliser le contenu défini par cette classe existante comme votre propre contenu. , ou modifiez la méthode d'origine pour la rendre plus adaptée aux besoins particuliers. Il s'agit d'un héritage. L'héritage est un mécanisme permettant aux sous-classes de partager automatiquement les données et les méthodes de la classe parent. Il s'agit d'une relation entre les classes qui améliore la réutilisabilité et l'évolutivité du logiciel.
Polymorphisme :
Le polymorphisme signifie que le type spécifique pointé par la variable de référence définie dans le programme et l'appel de méthode émis via la variable de référence ne sont pas déterminés lors de la programmation, mais uniquement pendant l'exécution du programme. . La détermination, c'est-à-dire vers quel objet d'instance de classe pointe une variable de référence et quelle classe implémente l'appel de méthode émis par la variable de référence, doit être déterminée lors de l'exécution du programme.
Abstraction :
L'abstraction consiste à découvrir les similitudes et les points communs de certaines choses, puis à classer ces choses dans une classe. Cette classe ne considère que les similitudes et les points communs de ces choses, et ignore les similitudes et les points communs. points communs de ces choses. Concentrez-vous sur les aspects qui ne sont pas pertinents par rapport au sujet et à l’objectif actuels, et concentrez-vous sur les aspects qui sont pertinents par rapport à l’objectif actuel. Par exemple, si vous voyez une fourmi et un éléphant et que vous pouvez imaginer à quel point ils se ressemblent, c’est de l’abstraction.
6. Quels sont les concepts et les différences entre les classes abstraites et les interfaces ?
Classe abstraite : c'est une classe spéciale qui ne peut pas être instanciée et ne peut être utilisée que comme classe parent d'autres classes. Déclaré à l'aide du mot-clé abstract.
Interface : Il s'agit d'une classe abstraite spéciale et d'une classe spéciale déclarée à l'aide de l'interface.
Différences :
(1) Les opérations des classes abstraites sont implémentées via le mot-clé d'héritage extends, tandis que l'utilisation des interfaces est implémentée via le mot-clé Implements.
(2) Il y a des membres de données dans la classe abstraite, qui peuvent réaliser l'encapsulation de données, mais l'interface n'a pas de membres de données.
(3) Les classes abstraites peuvent avoir des constructeurs, mais les interfaces n'ont pas de constructeurs.
(4) Les méthodes des classes abstraites peuvent être modifiées avec les mots-clés private, protected et public (les méthodes abstraites ne peuvent pas être privées), tandis que les méthodes des interfaces ne peuvent être modifiées qu'avec le mot-clé public.
(5) Une classe ne peut hériter que d'une seule classe abstraite, et une classe peut implémenter plusieurs interfaces en même temps.
(6) Une classe abstraite peut avoir un code d'implémentation pour les méthodes membres, mais une interface ne peut pas avoir de code d'implémentation pour les méthodes membres.
7. Qu'est-ce qu'un constructeur, qu'est-ce qu'un destructeur et quelle est sa fonction ?
Le constructeur (méthode) est la première méthode automatiquement appelée par l'objet après la création de l'objet. Il existe dans chaque classe déclarée et constitue une méthode membre spéciale. Sa fonction est d'effectuer certaines tâches d'initialisation. En Php, __construct() est utilisé pour déclarer la méthode constructeur, et une seule peut être déclarée.
Le destructeur (méthode) est exactement l'opposé du constructeur. C'est la dernière méthode automatiquement appelée par l'objet avant sa destruction. Il s'agit d'un contenu nouvellement ajouté dans PHP5 qui est utilisé pour effectuer certaines opérations spécifiques avant de détruire un objet, comme la fermeture de fichiers et la libération de mémoire.
8. Comment surcharger la méthode de la classe parent, donnez un exemple
La surcharge signifie remplacer la méthode de la classe parent, c'est-à-dire utiliser la méthode dans la sous-classe pour remplacer la méthode de la sous-classe. Les méthodes héritées de la classe parent sont également appelées remplacements de méthode.
La clé pour remplacer la méthode de la classe parent est de créer la même méthode dans la classe parent de la sous-classe, y compris le nom de la méthode, les paramètres et le type de valeur de retour. En PHP, il suffit que les noms des méthodes soient les mêmes.
9. Quelles sont les méthodes magiques couramment utilisées ? Par exemple
PHP stipule que les méthodes commençant par deux traits de soulignement (__) sont réservées comme méthodes magiques, il est donc recommandé que les noms de vos fonctions ne commencent pas par __ sauf si c'est pour surcharger la méthode magique existante.
__construct() est automatiquement appelée lors de l'instanciation d'une classe.
__destruct() est automatiquement appelée lorsque l'objet de classe est utilisé.
__set() est appelé lors de l'attribution d'une valeur à une propriété non définie.
__get() est appelé lorsque des propriétés non définies sont appelées.
__isset() sera appelé lors de l'utilisation de la fonction isset() ou empty().
__unset() sera appelé lorsque unset() est utilisé.
__sleep() est appelé lors de la sérialisation à l'aide de Serialize.
__wakeup() est appelé lors de la désérialisation à l'aide de unserialize.
__call() est appelée lors de l'appel d'une méthode qui n'existe pas.
__callStatic() appelle une méthode statique qui n'existe pas.
__toString() est appelée lors de la conversion d'un objet en chaîne. Comme l'écho.
__invoke() Appelé lors de la tentative d'invocation d'un objet en tant que méthode.
__set_state() est appelé lors de l'utilisation de la fonction var_export(). Accepte un paramètre de tableau.
__clone() est appelée lors de l'utilisation de clone pour copier un objet.
10. Que représentent respectivement les trois mots-clés $this et self et parent ? Dans quelles situations est-il utilisé ?
$cet objet actuel
classe auto-actuelle
classe parent parent de la classe actuelle
$this est utilisé dans la classe actuelle, use - >Propriétés et méthodes d'appel.
self est également utilisé dans la classe actuelle, mais il doit être appelé en utilisant ::.
parent est utilisé dans les cours.
11. Comment définir des constantes dans une classe, comment appeler des constantes dans une classe et comment appeler des constantes en dehors d'une classe.
Les constantes d'une classe sont également des constantes membres. Une constante est une quantité qui ne change pas et est une valeur constante.
Définissez les constantes à l'aide du mot-clé const.
Par exemple : const PI = 3.1415326;
Que ce soit à l'intérieur d'une classe ou à l'extérieur d'une classe, l'accès aux constantes et aux variables sont différents. Les constantes n'ont pas besoin d'instancier les objets. Le format de
pour accéder aux constantes est le nom de la classe plus le symbole de l'opérateur de portée (double deux-points) à appeler.
C'est-à-dire : nom de classe :: nom de constante de classe
12. Comment utiliser l'opérateur de portée ::? Dans quelles situations est-il utilisé ?
(1) Appeler des constantes de classe
(2) Appeler des méthodes statiques (méthodes de classe modifiées avec static)
Méthode __autoload() Comment. est-ce que ça marche ?
La condition de base pour utiliser cette fonction magique est que le nom du fichier de classe doit être cohérent avec le nom de la classe.
Lorsque le programme est exécuté pour instancier une certaine classe, si le fichier de classe n'est pas introduit avant l'instanciation, la fonction __autoload() sera automatiquement exécutée.
Cette fonction trouvera le chemin du fichier de classe en fonction du nom de la classe instanciée. Lorsqu'il est déterminé que le fichier de classe existe dans le chemin du fichier de classe,
le fera. exécutez include ou require pour le charger. Entrez dans cette classe, puis le programme continue de s'exécuter. Si le fichier n'existe pas dans ce chemin, une erreur sera affichée.
L'utilisation de la fonction magique de chargement automatique élimine le besoin d'écrire de nombreuses fonctions include ou require.
4. Partie THINKPHP
1. Frameworks PHP communs
Réponse : thinkPHP, laravel, yii, ci, etc. .
2. Comment comprendre le fichier à entrée unique dans TP ?
ThinkPHP adopte 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 dossier d'inscription comprend principalement :
(1) Définir le chemin du framework, le chemin du projet et le nom du projet (facultatif)
(2) Définir les constantes associées pour le mode débogage et le mode d'exécution (facultatif)
(3) Charger le fichier d'entrée du framework (obligatoire )
3. Qu'est-ce que la superposition MVC dans ThinkPHP ? (Comprendre)
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 sans 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 s'appuie pas sur M ou 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)
(1) Choisissez le bon moteur de stockage
MyISAM convient à certaines applications nécessitant un grand nombre de requêtes, mais il n'est pas très adapté à 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, et 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
Rappelez-vous 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 précise 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 « fixe -longueur". 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 (noyau + comportement + pilote) ?
(1) Core : C'est le code de base du framework, une chose indispensable. TP lui-même est un framework développé sur la base de l'idée MVC.
(2) Comportement : le comportement joue un rôle décisif dans l'architecture de la nouvelle version de ThinkPHP. Au-dessus du noyau du système, il existe de nombreux bits d'extension de balise, et chaque position de balise peut exécuter sa propre fonction dans. tour à tour un comportement indépendant. 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.
(3) 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.
6. Quelle est la configuration conventionnelle ?
La configuration dite conventionnelle est le fichier de configuration propre au framework. Ce fichier se trouve dans convention.php dans le répertoire principal du framework et le contenu de configuration est le suivant. Étant donné que ce fichier est un fichier de configuration fourni avec le framework, dans le processus de développement actuel, il nous sert principalement d'exemple de référence. Nous modifions rarement le contenu de configuration de ce fichier, et configurons le plus souvent les champs en fonction des besoins. selon la convention Définitions et annotations pour personnaliser le contenu de configuration dans les modules ou Common.
7. Qu'est-ce que l'injection SQL ? (Comprendre)
L'attaque par injection SQL est l'un des moyens couramment utilisés 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, et le programme rassemblera les informations soumises pour générer un SQL complet. instruction, le serveur est amené à exécuter 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)
(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 pré- ; Mécanisme de traitement ;
(3) Utilisez les paramètres de liaison
(4) 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 )
(5) Utiliser des mécanismes de vérification automatique et de complétion automatique pour un filtrage personnalisé des applications ;
(6) Utiliser 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 ?
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 :
// Pour activer le mode débogage, il est recommandé d'activer. commentaires de la phase de déploiement pendant la phase de développement ou définissez-le sur false
define('APP_DEBUG', true);
Les avantages du mode débogage sont : Activez la journalisation, toutes les informations d'erreur et les informations de débogage seront enregistrées en détail pour faciliter le débogage ; Désactiver la mise en cache des modèles, les modifications des modèles peuvent prendre effet immédiatement ; Enregistrer les journaux SQL, pour faciliter l'analyse SQL ; les modifications des champs de la table de données ne sont pas affectées par la mise en cache, vérifier strictement la casse des fichiers (même sur les plates-formes Windows), vous aidant à découvrir les problèmes de déploiement Linux à l'avance ; peut être facilement utilisé à différentes étapes du processus de développement, y compris le développement. Différents modes d'application peuvent configurer des fichiers de configuration de projet indépendants pour toutes les situations requises, telles que les tests et la démonstration.
10. Quels modes de configuration sont pris en charge dans TP ? Priorité?
Configuration conventionnelle->Configuration de l'application->Configuration du mode->Configuration du débogage->Configuration de l'état->Configuration du module->Configuration étendue->Configuration dynamique
Ce qui précède est l'ordre de chargement des fichiers de configuration. Étant donné que la configuration ultérieure écrasera la configuration précédente du même nom (si elle ne prend pas effet), la priorité est de droite à gauche.
11. Quels sont les modèles d'URL dans TP ? Quelle est la valeur par défaut ?
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 ?
(1)系统变量:_ENV、 $ _POST、 $_GET、 _SESSION和 $_COOKIE变量
(2)获取系统变量:
{Erreur d'analyse KaTeX : 'EOF' attendu, j'ai obtenu '}' à la position 25 : …ver.script_name}̲ // 输出_SERVER['SCRIPT_NAME']变量
{Erreur d'analyse KaTeX : 'EOF' attendu, obtenu '}' à la position 22 : …session .user_id}̲ // 输出_SESSION['user_id']变量
{Erreur d'analyse KaTeX : 'EOF' attendu, obtenu '}' à la position 21 : ….get.pageNumber} ̲ // 输出_GET['pageNumber']变量
{Erreur d'analyse KaTeX : 'EOF' attendu, obtenu '}' à la position 18 : …ink.cookie.name}̲ / / 输出_COOKIE['name']变量
13、ThinkPHP框架中D函数与M函数的区别是什么?
M方法实例化模型无需用户为每个数据表定义模型类,D方法可以自动检测模型类,如果存在自定义的模型类,则实例化自定义模型类,如果不存在,则会自动调用M方法去实例化Model基类。同时对于已实例化过的模型,不会重复去实例化(单例模式)。
五、smarty模板引擎
1. Il s'agit d'une application php, d'une application smarty , et d'une application php和html混合的过程smarty的缓存需要手动开启,smarty的缓存就是把编译好的文件执行后,同时生成一份静态的html页面,再次访问的时候,你访问的就是是html文件了,所以就效率来说,要高一些。
2
、什么是intelligent ? Smarty?Smarty?php离, 使的程序员改变程序的逻辑内容时不会影响到美工的页面设计,美工重新修改页面时不会影响到程序的程序逻辑,这在多人合作的项目中显的尤为重要。(也易于程序的多样式开发)
Smarty优点(1) Rapide : par rapport aux autres moteurs de modèles.
(2) Type compilé : un programme écrit en smarty doit être compilé dans un fichier PHP de technologie non-modèle au moment de l'exécution
(3) Technologie de mise en cache : elle peut convertir ce que l'utilisateur voit finalement Les fichiers HTML sont mis en cache dans une page HTML statique
(4) Technologie de plug-in : smarty peut personnaliser les plug-ins.
Lieux où smarty ne convient pas
(1) Contenu qui doit être mis à jour en temps réel. Par exemple, comme l'affichage des stocks, il doit mettre à jour les données fréquemment
(2) Petits projets. Petits projets qui nécessitent à la fois un artiste et un programmeur en raison de leur simplicité
3 Utilisez {$smarty} pour conserver les variables dans le modèle
{KaTeX. erreur d'analyse : 'EOF' attendu, obtenu '}' à la position 16 : smarty.get.page}̲ //Similaire à l'accès à _GET[page]
{KaTeX dans un script php 'EOF' , a obtenu '}' en position 16 : smarty.cookies.}̲
{smarty.post.}
{Erreur d'analyse KaTeX : 'EOF' attendu, j'ai obtenu '}' à la position 16 : smarty.session.}̲
{smarty.server.}
4. Accéder aux variables en php dans les modèles
5. Médiateur de variables
Résumé des questions d'entretien PHP classiques 2018 (mis à jour) - Questions d'entretien PHP
6 Lorsque PHP interroge la base de données MySQL, des caractères tronqués apparaissent lors de l'interrogation des résultats chinois. Comment le résoudre ?
(1) Méta du fichier (lors de la définition de l'analyse du navigateur)
(2) Paramètres d'encodage lors de la connexion à la base de données
(3) Utilisé dans les fichiers PHP Le la fonction d'en-tête détermine l'encodage
7. Mécanisme de mise en cache
Si la mise en cache est activée, smarty générera également une page HTML statique si elle n'expire pas dans le délai défini. , Lorsque vous visitez à nouveau, vous accédez au fichier html, ce qui réduit le besoin de lire la base de données, donc en termes d'efficacité, elle est plus élevée.
8. Modèle d'affectation et de chargement Smarty
$Smarty->assign(name,value)
$Smarty->display('index .html ')
9. À quoi sert la technologie des modèles Marty ?
Afin de séparer le php et le html, les artistes et les programmeurs doivent effectuer leurs propres tâches sans interférer les uns avec les autres.
10. Quelles sont les principales configurations smarty ?
(1) Introduisez smarty.class.php;
(2) Instanciez l'objet smarty
(3) Re-modifiez le chemin du modèle par défaut ;
(4) Re-modifier le chemin du fichier compilé par défaut
(5) Re-modifier le chemin du fichier de configuration par défaut
(6) Re -modifier le chemin du cache par défaut.
(7) Vous pouvez définir s'il faut activer le cache.
(8) Vous pouvez définir les délimiteurs gauche et droit.
11. À quels détails devez-vous faire attention lorsque vous utilisez smarty ?
Smarty est un moteur de template basé sur le concept MVC. Il divise un programme de page en deux parties pour la mise en œuvre : la couche vue et la couche contrôle
En d'autres termes, la technologie smarty intègre le. interface utilisateur séparée du code php.
De cette manière, les programmeurs et les artistes peuvent accomplir leurs tâches respectives sans interférer les uns avec les autres.
12. Faites attention aux problèmes suivants lorsque vous utilisez smarty :
(1) Configurez correctement smarty. Il est principalement nécessaire d'instancier l'objet smarty et de configurer le chemin du fichier modèle smarty
(2) Utiliser l'affectation et afficher la page d'affichage dans la page php
(3) Smarty ; les fichiers modèles ne sont pas autorisés à apparaître dans un extrait de code PHP, tous les commentaires, variables et fonctions doivent être inclus dans des délimiteurs.
6. Système de développement secondaire (DEDE, ecshop)
1. Compréhension du développement secondaire
II Développement secondaire, pour le dire simplement, il s'agit de personnaliser et de modifier les logiciels existants, d'étendre les fonctions, puis d'obtenir les fonctions souhaitées. De manière générale, le cœur du système d'origine ne sera pas modifié.
2. MVC
Traitement des données du modèle (modèle).
Afficher l'affichage du modèle.
Le contrôleur contrôle le processus.
Quel est le concept de MVC ? Quelles sont les tâches principales de chaque niveau ?
MVC (model-view-controller) est un modèle de conception de logiciel ou une idée de programmation.
M fait référence à la couche de modèle Modèle, V est la couche Vue (couche d'affichage ou interface utilisateur) et C est la couche Contrôleur.
Le but de l'utilisation de mvc est de séparer M et V, afin qu'un programme puisse facilement utiliser différentes interfaces utilisateur.
Dans le développement de sites Web, la couche modèle
est généralement responsable de l'ajout, de la suppression, de la modification et de la vérification des informations des tables de base de données, la couche
vue est responsable de l'affichage du contenu de la page. , et le contrôle
La couche contrôleur joue un rôle de régulation entre M et V. La couche contrôleur décide quelle méthode de quelle classe de modèle appeler. Après l'exécution de
, la couche contrôleur décide laquelle. couche de vue à laquelle attribuer le résultat.
3. Certains avertissements et erreurs apparaissent lors de l'accès au programme de développement secondaire après l'installation
En fonction des erreurs, modifiez les paramètres de configuration du serveur et Baidu
4. Fonctions, remplacement de modèles, ajout et modification de fonctions
En fait, il est également utilisé pour les applications orientées objet, et le remplacement de modèles est similaire à l'utilisation de smarty
5 , Quels outils de développement secondaires avez-vous utilisés ?
Dedecms phpcms ecshop, en gros si vous avez de bonnes bases, cela ne posera aucun problème pour apprendre.
6. Est-il préférable de faire du développement primaire comme PHP ou du développement secondaire ?
Généralement, les petites et moyennes entreprises utilisent le système cms pour le développement secondaire, le tout dans un souci d'efficacité. Bien sûr, si vous souhaitez tout développer en même temps, ce n'est pas un problème, à condition que vous sachiez utiliser le framework et que vous disposiez de suffisamment de temps pour développer en équipe pour éviter les problèmes de droits d'auteur.
7. Dans le processus de développement secondaire, comment les accès aux méthodes entre plusieurs classes sont-ils transmis ?
Il ne s'agit pas d'un héritage de classe mais d'une combinaison d'objets. Passez les objets instanciés via global
8 Si dedecms change de répertoire, un certain élément en arrière-plan ne peut pas être saisi. .Comment le résoudre ?
Modifiez les paramètres du noyau d'arrière-plan par le nom du répertoire du projet actuel
9 Quelle est la compréhension du modèle personnalisé dans dedecms ?
Dans le système DreamWeaver, il existe le concept de modèle de contenu. Différents modèles de contenu peuvent être utilisés pour créer des sites avec différentes formes de contenu. Le système est livré avec les modèles suivants : articles ordinaires, albums photos, Logiciels, produits, informations classifiées, sujets spéciaux.
Grâce au modèle propre du système, nous pouvons l'utiliser pour créer différents types de sites. Par exemple, vous pouvez utiliser un atlas pour créer un site d'images et utiliser un modèle logiciel pour créer un site de téléchargement de logiciels.
Bien sûr, les modèles ci-dessus fournis avec le système sont appelés modèles de système. Les utilisateurs peuvent définir eux-mêmes certains modèles, tels que des livres, des albums de musique, etc. Ce n'est qu'en personnalisant ces modèles qu'ils peuvent créer des sites avec plus de contenu. formes.
Cela équivaut à ajouter automatiquement une structure de tableau pour s'adapter aux changements des besoins actuels
10 Concepts en dede, conception et utilisation de modèles, vous devez comprendre les concepts suivants<.>
(1) Modèle de section (couverture) : fait référence au modèle utilisé par la page d'accueil du site Web ou le canal de couverture des colonnes les plus importantes, généralement nommé avec "index_identification ID.htm" De plus, les pages individuelles ou les balises personnalisées définies par les utilisateurs peuvent également choisir de prendre en charge les balises de modèle de section. Si elles sont prises en charge, le système utilisera le moteur de balises de modèle de section pour analyser avant de sortir le contenu ou de générer un fichier spécifique. (2) Modèle de liste : fait référence au modèle de liste de tous les articles dans une certaine colonne du site Web, généralement nommé avec "list_identification ID.htm". (3) Modèle de fichier : représente le modèle de la page de visualisation du document, tel que le modèle d'article, généralement nommé avec "article_identification ID.htm". (4) Autres modèles : Les modèles généraux du système incluent : un modèle de page d'accueil, un modèle de recherche, un modèle de fonction de compilation RSS, JS, etc. De plus, les utilisateurs peuvent également personnaliser un modèle pour créer N'importe quel fichier.11. Combien de balises sont utilisées dans dede ?
Les balises de contenu de liste ne peuvent être utilisées que dans leur portée, les balises de liste ne peuvent être utilisées que dans des listes et les balises de contenu ne peuvent être utilisées que dans les balises de contenu. Les balises globales peuvent être utilisées dans toutes les pages12. Familier avec les bibliothèques de classes couramment utilisées
(par exemple : dedesql.class.php) ; familier avec la bibliothèque de fonctions système (common.func.php) ; familier avec la bibliothèque de fonctions personnalisées (extend.func.php) ; > 7. Développement de la plateforme publique WeChat1. Mécanisme de fonctionnement WeChat
Quelle langue est utilisée pour communiquer entre le compte officiel et php : Comment recevoir du XML. Données du compte officiel Weixin.php :
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];//Recevoir des données XML
2. 🎜> WeChat propose actuellement 7 types de messages de base, à savoir :(1) message texte (texte)
(2) message photo (image) ; >(3) Voix
(4) Vidéo
(5) Localisation
(6) Message de lien (lien); (7) Type de poussée d'événement (événement)
. Maîtrisez le format de transfert de données lors de l'envoi de différents types de messages
3 La fonction pour lire l'intégralité du fichier dans une chaîne estFile_get_contents
4. Fonctions couramment utilisées
La fonction qui analyse les données XML en objets est
simplexml_load_string()La fonction qui convertit les chaînes en tableaux est___ éclater_________, la La fonction qui convertit un tableau en chaîne est ____implode________.La chaîne qui code la chaîne URL est ____urlencode________.
5 Le rôle de la fonction Sprintf
Vous pouvez vérifier cela dans le manuel.
6. Pourquoi le compte officiel WeChat n'est-il pas en mesure de fournir des services ?
(1) Raison du réseau, raison de l'interface de données
(2) Erreur de code, comment deviner la raisonVérifiez où modifier, si le code est correctVous pouvez sortir les données et y jeter un œil. Utilisez php pour exploiter les fichiers
$myfile = fopen(“newfile.txt”, “w”); txt="aaaaaaaaaa";fwrite(txt ="aaaaaaaaaa"; fwrite(txt="aaaaaaaaaa";fwrite(myfile, txt);fclose(txt); fclose(txt);fclose(myfile);
7. Push d'événement de menu personnalisé
CliquezCliquez sur le lien de saut Scannez le QR code pour pousser l'événementScannez le code QR pour pousser et apparaître
Faire apparaître le système pour prendre des photos et publier des photosFaire apparaître l'événement de l'expéditeur de photos de l'album WeChatFaire apparaître les événements du sélecteur de localisation géographique8 Le rôle du jeton
Vérification du mécanisme de sécurité, utilisé pour la vérification de la sécurité entre le serveur WeChat et le serveur PHP.9. Le rôle d'Appid et secrect
Lors de la demande de l'interface API (comme l'opération de menu), vous devez transmettre les valeurs appid et secrect à obtenir le code d'autorisation de l'application
Merci à tous d'avoir lu et j'espère que votre entretien se passe bien
Tutoriel recommandé : "Tutoriel php"
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!