La collection la plus complète de questions d'entretien PHP de l'histoire qui mérite d'être collectée (ce qui rend votre entretien plus efficace)

慕斯
Libérer: 2023-04-10 07:36:02
avant
6721 Les gens l'ont consulté

Cet article partagera avec vous les questions d'entretien de base PHP les plus complètes de l'histoire et vous aidera à consolider vos fondations. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

La collection la plus complète de questions d'entretien PHP de l'histoire qui mérite d'être collectée (ce qui rend votre entretien plus efficace)

1. Partie de base de PHP

1. L'un des avantages majeurs du langage PHP est qu'il est multiplateforme. 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 ?

Deux méthodes de Get et post
Différence :
(1) Visibilité de l'URL : Les paramètres url de la méthode get sont visibles, mais le la méthode 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. Il est recommandé d'utiliser la méthode de soumission de données Post
2. . Il est recommandé d'utiliser Get pour la requête de données. Pour ajouter, modifier ou supprimer des données, il est recommandé d'utiliser la méthode Post ;
La méthode get utilisée par Baidu, car elle est visible à partir de son URL

3. Maîtriser quels frameworks, moteurs de modèles et systèmes PHP etc.

Framework : Il existe de nombreux frameworks, tels que CI, Yii, Laravel, etc. Ce que nous avons appris est thinkphp
Moteur de modèles : Il y en a aussi beaucoup, dans le manuel, ce que nous avons appris 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., ce que nous avons appris c'est DEDECMS, Ecshop

4. Qu'est-ce que la façade Web -technologies finales que vous maîtrisez ?

Maîtrise de la mise en page Web p+CSS, JavaScript, du framework jQuery, du traitement d'images Photoshop

5.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 : ① Il peut permettre la réutilisabilité du code et éviter la redondance du code ; ②M et V réalisent la séparation du code, de sorte que le même programme puisse utiliser différentes expressions

10. 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 la chaîne de format de chaîne json à utiliser. décodé. assoc Lorsque ce paramètre est TRUE, il renverra un tableau au lieu d'un objet ;
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 tableau

12. Quelle est la 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 du cookie
(3) la session est Service 'session'', vous devez activer le service lors de son utilisation, les cookies n'ont pas besoin d'être activés, vous pouvez utiliser directement

13. Fonctions communes pour le traitement des 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( ) Un ou plusieurs éléments Inséreront-ils à la fin du tableau (push)

(11) array_pop() Pop et renverront le dernier élément du 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() obtient la longueur de la chaîne

(3) mb_strlen() obtient la longueur de la chaîne (le codage des caractères peut être spécifié et la longueur est calculée 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 du formaté. chaîne (généralement utilisée après avoir obtenu le nom de la table de données après la division de la table)

(10) strstr() trouve la première occurrence de la chaîne

(11) ajoute des barres obliques inverses pour citer le string

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() formate une heure/date locale.

(2) getdate() obtient des informations de 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 toute description datetime de chaîne dans un horodatage Unix

(7) strftime() Formate l'heure/la date locale en fonction des paramètres régionaux

16. Fonctions courantes 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. Cet élément est très important

. 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) Obtenir le répertoire de travail actuel getcwd()

(8) Répertorier 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.

  1. 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 : select

  1. 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.

  1. 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.

  1. 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. Avant qu'une transaction n'agisse 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

  1. 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. Les vues peuvent être ajoutées, modifiées, vérifiées et exploitées. 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 par rapport aux 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 apporter des modifications à 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.

  1. 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. plus tard. 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.

  1. 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.

  1. Comment comprendre les trois paradigmes de manière populaire ?

Première forme normale : 1NF est une contrainte d'atomicité 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 pour l'unicité des enregistrements ; les contraintes exigent que les enregistrements aient des identifiants uniques, c'est-à-dire l'unicité des entités ;

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. n'a pas de redondance. .

  1. Qu'est-ce qu'une table de base ? Qu'est-ce qu'une vue ?

La table de base est une table qui existe indépendamment 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

  1. 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 offrent un certain degré d'indépendance logique pour la base de données ;

(4) Les vues peuvent assurer la protection des données confidentielles.

  1. 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

  1. Quelles sont les différences entre les clés primaires, les clés étrangères et les 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
Clé étrangère – La clé étrangère d'une table est la clé primaire d'une autre table. Les clés étrangères peuvent avoir des doublons et peuvent être des valeurs nulles
Index – ce champ n'a pas de valeurs en double, mais peut avoir une valeur nulle
Fonction :
Clé primaire – à utiliser Pour garantir l'intégrité des données
Clés étrangères – utilisées pour établir des connexions avec d'autres tables
Index – pour augmenter la vitesse de tri des requêtes
Numéro :
Clés primaires – il ne peut y avoir qu'une seule clé primaire
Clés étrangères – une table peut avoir plusieurs clés étrangères
Index – une table peut avoir plusieurs index uniques

  1. Que pouvez-vous utiliser pour assurez-vous que les champs d'une table n'acceptent que des plages spécifiques. La valeur dans ?

Vérifier la limite, qui est définie dans la table de la base de données, est utilisée pour limiter la valeur saisie dans cette colonne.

  1. 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. doit être écrit à la fin de la clause Where.HAVING en 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 Les opérations d'expression sont effectuées sur les champs de la clause, ce qui amènera le moteur à abandonner l'utilisation de l'index et à effectuer une analyse complète de la table

  1. Il y a une différence entre ' sous-requête corrélée » et « sous-requête non corrélée » dans l'instruction SQL Quelle est la différence ?

(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ées

  1. Quelle 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).

  1. Moteur de stockage MySQL, la différence entre myisam et innodb.

MyISAM est un moteur de stockage non transactionnel ; adapté aux applications avec des verrous de table fréquents, aucun blocage ne prend en charge les transactions ; Convient aux petites données et aux petites concurrences

Innodb 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.

  1. 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.

  1. La base de données MySQL est utilisée comme stockage du système de publication. L'augmentation de plus de 50 000 éléments par jour est estimée à trois ans d'exploitation et de maintenance. Comment l'optimiser ?

(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.

  1. Pour les sites Web à fort trafic, quelle méthode utilisez-vous pour résoudre le problème des statistiques de page des visites ?

(1) Confirmez si le serveur peut prendre en charge le trafic actuel.

(2) Optimiser l'accès à la base de données.

(3) L'accès externe aux liens (hotlinking), tels que le hotlinking d'images, est interdit.

(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 arborescence 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 espaces ne seront pas automatiquement supprimés par l'analyseur, mais le HTML filtre les espaces. 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.

a 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 persistance ; moyen ! 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 l'interdépendance des programmes. L'impact des changements provoqués par le contenu défini par une classe existante est considéré comme son propre contenu, et du nouveau contenu peut être ajouté, ou la méthode originale peut être modifiée pour la rendre plus adaptée à des besoins particuliers. 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 dans le programme. est déterminé pendant l'exécution qu'une variable de référence pointera vers un objet d'instance de quelle classe. L'appel de méthode émis par la variable de référence est une méthode implémentée dans quelle classe. Cela doit être déterminé 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 ignorera les aspects qui ne sont pas pertinents par rapport au sujet et à l'objectif actuels et se concentrera 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 : C'est une classe abstraite spéciale et une classe spéciale, déclarée à l'aide de l'interface.

Différence :

(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 de la 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. Opérateur Scope : Comment utiliser ? 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 fichier d'entrée comprend principalement :

(1) Définir le chemin du framework, le chemin du projet et le nom du projet (facultatif)
(2) Définir le mode de débogage et Constantes associées du mode d'exécution (facultatif)
(3) Chargement du 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 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 se compose d'une classe View et d'un fichier modèle. Le modèle est séparé à 100 % 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.
Dans l'ensemble, 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 la signification générale selon leur propre compréhension)

(1) Choisissez le bon moteur de stockage

MyISAM convient Il convient pour certaines applications qui nécessitent un grand nombre de requêtes, mais ce 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, et pour certaines petites applications, il sera plus lent que MyISAM. Mais il prend en charge le "verrouillage de ligne", 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 spécifique 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 (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 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 les commentaires de la phase de déploiement pendant la phase de développement ou de le définir sur false
definition('APP_DEBUG', true);
Les avantages du mode débogage sont : Activer journalisation, toutes les informations d'erreur et informations de débogage. Tout sera enregistré en détail pour faciliter le débogage ; désactivez le cache du modèle, les modifications du modèle peuvent prendre effet immédiatement ; enregistrez les journaux SQL pour faciliter l'analyse SQL, désactivez la mise en cache des champs, les modifications des champs de la table de données ne le seront pas ; être affecté par le cache ; vérifier strictement le cas du fichier (même sur la plate-forme Windows), vous aide à découvrir à l'avance les problèmes de déploiement Linux ; il peut être facilement utilisé dans différentes étapes du processus de développement, y compris le développement, les tests, la démonstration et d'autres situations nécessaires ; Différents modes d'application peuvent être configurés avec des fichiers de configuration de projet indépendants.

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)系统变量:                                             S                            E                    R.                    V                    E                    R.                    、                         _SERVEUR,              S ERVER_ENV、 $_POST、 $_GET、                                             R.                            E                    Q                    U                    E                    S                    T                    、                         _DEMANDE,              R EQUEST_SESSION和 $_COOKIE变量

(2)获取系统变量:

{Erreur d'analyse KaTeX : 'EOF' attendu , a 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}̲ // Sortie _COOKIE['name'] variable

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

La méthode M instancie le modèle sans que l'utilisateur définisse une classe de modèle pour chaque table de données. La méthode D peut détecter automatiquement la classe de modèle personnalisée. Si une classe de modèle personnalisée existe, la classe de modèle personnalisée sera instanciée. 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).

5. Moteur de modèles intelligents

1. Quelle est la différence entre la compilation et la mise en cache ?

Le processus de compilation de smarty consiste à prendre le modèle et à remplacer les balises à l'intérieur par le code php correspondant. C'est la compilation de smarty. En fait, c'est le processus de mélange de php et de html. Le cache de smarty doit être activé manuellement. Le cache de Smarty doit exécuter le fichier compilé et générer une page html statique en même temps. Lorsque vous y accéderez à nouveau, vous accéderez au fichier html, donc en termes d'efficacité. est plus élevé.

2. Qu'est-ce que smarty ? Quels sont les avantages de Smarty ?

Smarty est un moteur de template PHP écrit en PHP. La séparation permet au programmeur de modifier le contenu logique du programme sans affecter la conception de la page de l'artiste, et à l'artiste de remodifier la page sans affecter la logique du programme. Ceci est particulièrement important dans les projets de collaboration multi-personnes. (Il est également facile de développer des programmes multi-styles)

Avantages de 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

{

Erreur d'analyse KaTeX : 'EOF' attendu, obtenu '}' à la position 16 : smarty.get.page}̲ //Similaire à l'accès à _GET[page] {
Erreur d'analyse KaTeX : 'EOF' attendu, obtenu '}' à la position 16 : smarty.cookies.}̲ {smarty.post.} {
Erreur d'analyse KaTeX : 'EOF' attendu, obtenu '}' en position 16 : smarty.session.}̲ {smarty.server.}

    Accès en php dans le modèle Variables
5. Médiateur variable

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é, il est plus élevé.

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 modèles basé sur le concept MVC. Il divise un programme de page en deux parties pour la mise en œuvre : la couche de visualisation et la couche de contrôle

En d'autres termes, la technologie smarty combine les deux. Interface utilisateur utilisateur avec code séparé du code php.

De cette manière, les programmeurs et les artistes peuvent exercer leurs fonctions 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

Le développement secondaire, en termes simples, consiste à personnaliser et à modifier les logiciels existants, à étendre les fonctions, puis à réaliser ce que vous voulez. De manière générale, les fonctions seront ne change pas le cœur du système d’origine.

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 logicielle 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 de la table de base de données
la couche vue est responsable de l'affichage du contenu de la page
la couche contrôleur joue un rôle. 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, la couche contrôleur décide à quelle couche de vue 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. Vaut-il mieux 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, vous pouvez le faire, à condition de savoir utiliser le framework et de disposer 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 aux modèles fournis avec le 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 entendu, 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 formes de contenu.
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 au canal de couverture de colonne le plus important. Il est généralement nommé avec "index_identification ID.htm". page unique définie par l'utilisateur ou balises personnalisées, vous pouvez é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 :

Le système général comprend généralement des modèles : modèle de page d'accueil, modèle de recherche, RSS, modèle de fonction de compilation JS, etc. De plus, les utilisateurs peuvent également personnaliser un modèle pour créer n'importe quel modèle. déposer.

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 pages

12. Familiarisé avec les bibliothèques de classes couramment utilisées

(par exemple : dedesql.class.php familier avec) ; bibliothèques de fonctions système (common.func.php); familier avec la bibliothèque de fonctions personnalisées (extend.func.php); familier avec le fichier d'entrée frontal (common.inc.php)

7 . Développement de la plateforme publique WeChat

1. Mécanisme de fonctionnement de WeChat

Quelle langue est utilisée pour communiquer entre les comptes officiels et php : Xml

Comment recevoir. données du compte officiel dans Weixin.php :
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];//Recevoir des données XML

Type de message

WeChat propose actuellement 7 types de messages de base, à savoir :
(1) Message texte (texte)
(2) Message photo (image)
(3) Voix (voix)
 ; (4) Vidéo (vidéo)
(5) Emplacement géographique (emplacement
(6) Message de lien (lien
(7) Push d'événement (événement)
type. 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 est

File_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 une chaîne en tableau est ___exploser__________, qui convertit le tableau. into La fonction de la chaîne est ____implode________.
La chaîne de l'URL codée est ____urlencode________.

5 La fonction de la fonction Sprintf

Tout cela est possible Vérifiez 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 raison
Vérifiez où vous l'avez modifié, si le code est correct
Vous pouvez sortir les données et prendre un regard. Utilisez php pour gérer les fichiers
$myfile = fopen("newfile.txt", "w");
                           t                    x                    t                    =                    "                    un                    un                    un                    un                    un                    un                    un                    un                    un                    un                    "                    ;                    f                    w                    r                    je                    t                    e                    (                         txt ="aaaaaaaaaa"; fécrire(              txt="aaaauneuneuneuneuneune";fwrite(monfichier,                            t                    x                    t                    )                    ;                    f                    c                    je                    o                    s                    e                    (                         SMS); ffermer(              txt);fclose(monfichier);

7. Poussée d'événement du menu personnalisé

Cliquez
Cliquez sur le lien de saut
Scannez le code QR pour pousser l'événement
Scannez le code QR pour pousser et il apparaîtra
Le système affichera l'événement de prise de photos et de publication images
L'événement de l'affiche de l'album WeChat apparaîtra
Événement de sélection d'emplacement contextuel

8 Le rôle du jeton

Vérification du mécanisme de sécurité. , utilisé pour la vérification de 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 le fonctionnement du menu), vous besoin de transmettre les valeurs appid et secrect pour obtenir le code d'autorisation de l'application

Apprentissage recommandé : "Tutoriel vidéo 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!

Étiquettes associées:
source:csdn.net
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