Maison > développement back-end > tutoriel php > Partage de questions d'entretien avancées PHP

Partage de questions d'entretien avancées PHP

小云云
Libérer: 2023-03-20 14:40:01
original
2027 Les gens l'ont consulté

J'ai récemment interviewé plusieurs entreprises les unes après les autres. J'ai enregistré quelques questions importantes pour m'inciter à apprendre et à m'améliorer Il y a beaucoup de contenu, je vais donc l'améliorer petit à petit. peu et apprenez étape par étape En même temps, j'espère Donnez de l'aide à vos amis.

1. Connaissances liées à MySQL
1. Méthode d'optimisation MySQL
Méthodes courantes pour l'optimisation MYSQL
Plan d'optimisation des performances MySQL
2. Comment diviser la sous-table de la base de données
3. Comment Mysql+ effectue-t-il la sauvegarde à chaud et l'équilibrage de charge sur deux machines
4. Quels sont les types de tables de données
MyISAM, InnoDB, HEAP, BOB, ARCHIVE, CSV, etc.
MyISAM : mature, stable, facile à gérer et 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.
Les principales fonctionnalités des moteurs myisam et Innodb
Quelle est la différence entre le moteur de stockage de MySQL MyISAM et InnoDB ?
5. Empêcher la méthode d'injection SQL
;
6, après que MySQL ait divisé une grande table en plusieurs tables, comment résoudre le problème de l'efficacité des requêtes entre tables
7. Application d'index

      Quand considérer les index                                                                        Comment juger l'indice
                                                      ' s ' s ' ‐ ‐ ‐ ‐                                                                           use       using '       ‐   ‐ ‐      Index de texte intégral :
  1. Il ne peut être utilisé que pour les tables MYIsAM et est créé sur CHAR, Colonnes de type VARCHAR et TEXT.
    /**
    * 函数名称:post_check() 
    * 函数作用:对提交的编辑内容进行处理 
    * 参  数:$post: 要提交的内容 
    * 返 回 值:$post: 返回过滤后的内容 
    */
    function post_check($post){
    if(!get_magic_quotes_gpc()){// 判断magic_quotes_gpc是否为打开 
    $post =addslashes($post);// 进行magic_quotes_gpc没有打开的情况对提交数据的过滤 
    }
    $post =str_replace("_","\_",$post);// 把 '_'过滤掉
    $post =str_replace("%","\%",$post);// 把 '%'过滤掉
    $post = nl2br($post);// 回车转换 
    $post =htmlspecialchars($post);// html标记转换 
    return $post;
    }
    Copier après la connexion
8. Comment optimiser MySQL pour les grandes tables (des dizaines de millions) ?

9. Le problème des requêtes lentes de MySQL
En fait, analyser via des journaux de requêtes lentes est une comparaison La manière simple c'est-à-dire que si vous ne souhaitez pas lire les journaux, vous pouvez utiliser des outils pour le compléter, tels que mysqldumpslow, mysqlsla, myprofi, mysql-explain-slow-log, mysqllogfilter, etc. Je pense que cela nécessite une riche expérience pour analyser tout seul. Perte de temps.

10. Concernant l'enregistrement de la session dans le statut de connexion de l'utilisateur, les avantages et les inconvénients du cookie, de la base de données ou du memcache http://www.dewen.org/q/11504/

À propos de l'enregistrement de la session dans statut de connexion de l'utilisateur% 2Avantages et inconvénients des cookies ou bases de données ou memcache

11. Gestion des situations extrêmes d'application de transaction
12. Le langage SQL est divisé en 4 catégories, veuillez les lister
DDL--CREATE, DROP, ALTER
DML- -INSERT,UPDATE,DELETE
DQL-SELECT

DCL--GRANT,REVOKE,COMMIT,ROLLBACK


2. Bases de PHP

  • Partage inter-domaines de session

  • Plusieurs façons et différences dans la connexion PHP à la base de données MySQL
    mysql :Orienté processus
    mysqli:Orienté objet
    pdo : Haute portabilité
    Veuillez vous référer à : PHP basic series : trois API utilisées par PHP pour se connecter à la base de données MySQL

    3. PHP Advanced

    • L'utilisation de connexions longues et courtes

    • socket Utilisation

    • Problèmes de sécurité du paiement

    • Orienté objet
      Trois fonctionnalités majeures : encapsulation, héritage, polymorphisme (réécriture de méthodes) .
      Classe abstraite : abstraite, au moins une méthode est une méthode abstraite et ne peut pas être instanciée, définissant une interface publique pour les sous-classes.
      Interface : interface, résout le problème d'héritage unique de PHP. Toutes les méthodes sont des méthodes abstraites avec des droits d'accès publics. Les variables ne peuvent pas être déclarées, seules les constantes peuvent être déclarées.
      Hériter d'une classe et implémenter plusieurs interfaces en même temps
      la classe A étend B implémente l'interface 1, l'interface 2..., l'interface n(){
      //Implémenter les méthodes dans toutes les interfaces
      >

    • Analyse des raisons des différences de performances entre les architectures de sites Web lamp et lnmp

    • Analyse des performances des langages interprétés et compilés, avec des exemples.

      4. Règles régulières

      Correspondance email, html, js, etc.

      5. Bases du développement

      • Définitions de processus et de threads, différences et connexions.
        Statut du processus : en cours d'exécution, prêt, en attente

      6. Base de données Nosql
      Contactez la différence entre memcached, redis et mongodb
      3 complètement différentes scènes. 1.memcached : un cache mémoire à paire clé-valeur unique, un cache distribué irremplaçable pour la mise en cache des objets ; 2.redis : une collection d'algorithmes et de structures de données, des opérations rapides sur la structure des données sont sa plus grande fonctionnalité et prend en charge la persistance des données ; est une structure bson, entre rdb et nosql, qui est plus souple et plus flexible, mais ne prend pas en charge les transactions et n'est utilisée que pour le stockage de données non importantes.
      Reportez-vous à MongoDB ou Redis peuvent-ils remplacer Memcached ?
      7. Commandes Linux couramment utilisées
      Par exemple, liens symboliques
      8. Liés à l'architecture

      • Pression avant le projet est mis en ligne Test, le nombre de concurrences prises en charge par un seul serveur et le nombre de pvs.

      • Allocation raisonnable des ressources du serveur

      CPU : Apache
      MySQL est dans un environnement à charge élevée et il y a trop d'E/S disque lit et écrit. Cela prendra certainement beaucoup de ressources et l'utilisation du processeur sera certainement trop élevée.
      Mémoire : Bibliothèque mémoire, logiciel de base de données
      Disque dur : Fichier

      • Sélection de l'architecture Web2.0

      <<> Mongodb+Redis ou MySQL+Memcached sont mieux combinés, et la logique est simple , LLMP

      Il existe également une architecture LNAMP sur Internet, qui combine les avantages de nginx et d'Apache. Apache est utilisé pour charger PHP et nginx est responsable de l'analyse des autres requêtes Web. Le module de réécriture de nginx est utilisé, mais le port Apache n'est pas ouvert au monde extérieur. Apache De nombreux modules peuvent être chargés sans réduire les ressources.


      • Autres :

        Expérience en exploration de données, familier avec hadoop/lucene/mahout

      Rien à faire, je l'ai compris ; fait Quelques réponses. . . Ce n’est peut-être pas exhaustif, je le garde donc pour plus tard.
      1. Points de connaissances de base

      1.1 Les significations de plusieurs codes d'état dans le protocole HTTP : 503 500 401 403 404 200 301 302. . .

      200 : La demande est réussie et les données demandées sont renvoyées. 301 : Redirection permanente. 302 : Redirection temporaire.

      401 : La demande actuelle nécessite une vérification de l'utilisateur.

      403 : Le serveur refuse d'exécuter la requête, c'est-à-dire qu'il n'a pas l'autorisation.
      404 : La requête a échoué, les données demandées sont introuvables sur le serveur.
      500 : Erreur du serveur. Erreurs générales d’exécution du programme côté serveur.
      503 : Le serveur est temporairement en maintenance ou surchargé. Cet état est temporaire.

      1.2 Inclure require include_once La différence entre require_once.
      La gestion des échecs est différente :
      Lorsque require échoue, une erreur de niveau fatale sera générée et le programme cessera de s'exécuter.
      Seule une erreur de niveau d'avertissement est générée en cas d'échec de l'inclusion et le programme continue de s'exécuter.

      include_once/require_once et include/require gèrent les erreurs de la même manière

      La seule différence est que lorsque le code du fichier inclus existe déjà, il n'est plus inclus.

      1.3 L'historique évolutif de plusieurs versions de PHP/Mysql, comme les améliorations majeures de mysql4.0 à 4.1, PHP 4.x à 5.1, etc.

      1.4 HEREDOC introduit

      une méthode de définition de chaînes.
      Structure :

      <<<. Après l'invite, définissez un identifiant (sur une ligne séparée),

      puis une nouvelle ligne. Vient ensuite la chaîne elle-même,

      Enfin, utilisez l'identifiant défini précédemment comme marque de fin (une ligne séparée)

      Remarque :
      La dénomination des identifiants doit également suivre les règles PHP comme les autres balises :
      Peut ne contient que des lettres, des chiffres et des traits de soulignement, et doit commencer par des lettres et des traits de soulignement

      1.5 Écrivez quelques méthodes magiques PHP
      __construct() est automatiquement appelée lors de l'instanciation d'une classe ;
      __destruct() est automatiquement appelé 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 attributs non définis sont appelés.

      __isset() sera appelé lors de l'utilisation de la fonction isset() ou empty().

      __unset() sera appelé lors de l'utilisation d'unset().
      __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é 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é lors de la conversion d'un objet en chaîne. Comme l'écho.
      __invoke() est appelé lorsque vous essayez d'invoquer 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é lors de l'utilisation de clone pour copier un objet.

      1.6 Certains configurent les paramètres lors de la compilation de php
      –prefix=/usr/local/php répertoire d'installation de php
      –with-config-file-path=/usr/local/php/etc Spécifiez l'emplacement de php.ini
      –with-mysql=/usr/local/mysql répertoire d'installation mysql, prise en charge de mysql
      –with-mysqli=/usr/local/mysql/bin/mysql_config répertoire de fichiers mysqli, prise en charge de l'optimisation
      –enable -safe-mode Activer le mode sans échec
      –enable-ftp Activer la prise en charge FTP
      –enable-zip Activer la prise en charge de zip
      –with-bz2 Activer la prise en charge des fichiers bz2
      –with - jpeg-dir Activer la prise en charge des images jpeg
      –with-png-dir Activer la prise en charge des images png
      –with-freetype-dir Activer la prise en charge de la bibliothèque de polices freetype
      –without-iconv Désactiver iconv Fonction, conversion entre jeux de caractères
      –with-libxml-dir Prise en charge ouverte de la bibliothèque libxml2
      –with-xmlrpc Ouvrir le langage C pour xml-rpc
      –with-zlib-dir Prise en charge ouverte de la bibliothèque zlib
      –with-gd ouvre le support de la bibliothèque gd

      Pour plus d'informations, vous pouvez utiliser ./configure help pour afficher

      1.7 Trois façons de transmettre des paramètres à php.

      La première méthode utilise $argc $argv

      La deuxième méthode utilise la fonction getopt ()

      La troisième méthode demande à l'utilisateur une saisie, puis obtient les paramètres d'entrée. Un peu comme le langage C

      1.8 (mysql) Veuillez écrire la signification du type de données (int char varchar datetime text) ; Quelle est la différence entre varchar et char
      int : type numérique < ; 🎜> char : type de chaîne de longueur fixe
      varchar : type de chaîne de longueur variable
      datetime : type de période
      texte : type de texte

      Quelle est la différence entre varchar et char :

      a . La longueur du caractère est fixe, quelle que soit la quantité de données que vous stockez, elle aura toujours une longueur fixe.
      Le varchar est de longueur variable mais il doit ajouter 1 caractère à la longueur totale, qui est utilisé pour stocker la position.

      b. char a une longueur fixe, il est donc beaucoup plus rapide que varchar en termes de vitesse de traitement, mais cela gaspille de l'espace de stockage

      Donc, si le stockage n'est pas grand, mais qu'il y a des exigences de vitesse, vous pouvez utiliser le type char, et vice versa. Peut être instancié avec le type varchar.

      1.9 Les fonctions de débogage telles que error_reporting utilisent la fonction

      error_reporting() pour définir la directive error_reporting dans php.ini au moment de l'exécution.
      Le niveau d'erreur affiché peut donc être ajusté à tout moment dans le programme.
      display_errors doit être activé lors de l'utilisation de cette fonction.

      1.10 Avez-vous déjà utilisé un logiciel de contrôle de version ? Si oui, quel est le nom du logiciel de contrôle de version que vous utilisez ?

      1.11 La différence entre les expressions régulières standard Posix et Perl ;

      1.12 Quels endroits sont restreints après l'activation de Safe_mode ?

      Le démarrage de Safe_mode restreindra de nombreuses fonctions PHP, en particulier l'ouverture de fichiers liées au système, l'exécution de commandes et d'autres fonctions
      Toutes les fonctions qui exploitent des fichiers ne fonctionneront qu'avec. Fichiers avec le même UID de script.

      1.13 Écrivez du code pour résoudre le problème de plusieurs processus/threads lisant et écrivant un fichier en même temps.

      PHP ne prend pas en charge le multi-threading. Vous pouvez utiliser la fonction de verrouillage flock de PHP pour y parvenir.
      $fp = fopen("/tmp/lock.txt", "w+");
      if (flock($fp, LOCK_EX)) { // Effectuer un verrouillage exclusif
      fwrite($fp , " Écrivez quelque chose ici");
      flock($fp, LOCK_UN); // Libérez le verrou
      } else {
      echo "Impossible de verrouiller le fichier !";
      }
      fclose( $fp);

      1.14 写一段上传文件的代码。
      upload.html

      <form enctype="multipart/form-data" method="POST" action="upload.php">
      Send this file: <input name="name" type="file" />
      <input type="submit" value="Send File" />
      </form>
      upload.php
      $uploads_dir = &#39;/uploads&#39;;
      foreach ($_FILES["error"] as $key => $error) {
      if ($error == UPLOAD_ERR_OK) {
      $tmp_name = $_FILES["tmp_name"][$key];
      $name = $_FILES["name"][$key];
      move_uploaded_file($tmp_name, "$uploads_dir/$name");
      }
      }
      Copier après la connexion

      1.15 Mysql 的存储引擎,myisam和innodb的区别。
      a. MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持.
      b. MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快.
      c. InnoDB不支持FULLTEXT类型的索引.
      d. InnoDB 中不保存表的具体行数,也就是说,
      执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,
      但是MyISAM只要简单的读出保存好的行数即可.
      e. 对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。
      f. DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。
      g. LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,
      但是对于使用的额外的InnoDB特性(例如外键)的表不适用.
      h. MyISAM支持表锁,InnoDB支持行锁。

      二. web 架构,安全,项目经验
      2.1 介绍xdebug,apc,eAccelerator,Xcache,Zend opt的使用经验。

      2.2 使用mod_rewrite,在服务器上没有/archivers/567.html这个物理文件时,重定向到index.php?id=567 ,请先打开mod_rewrite.
      首先,打开mod_rewrite模块。

      其次,http.conf找到以下代码段:

      <Directory />
      Options FollowSymLinks
      AllowOverride None
      </Directory>
      Copier après la connexion

      将其中的:AllowOverride None 改为 AllowOverride All ,重启httpd服务即可。

      然后,在项目根目录下简历 .htaccess 文件,填写规则。

      2.3 MySQL数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?
      a. 设计良好的数据库结构,允许部分数据冗余,尽量避免join查询,提高效率。
      b. 选择合适的表字段数据类型和存储引擎,适当的添加索引。
      c. mysql库主从读写分离。
      d. 找规律分表,减少单表中的数据量提高查询速度。
      e。添加缓存机制,比如memcached,apc等。
      f. 不经常改动的页面,生成静态页面。
      g. 书写高效率的SQL。比如 SELECT * FROM TABEL 改为 SELECT field_1, field_2, field_3 FROM TABLE.

      2.4 写出一种排序算法(原理),并说出优化它的方法。

      2.5 请简单阐述您最得意的开发之作

      2.6 对于大流量的网站,您采用什么样的方法来解决各页面访问量统计问题
      a. 确认服务器是否能支撑当前访问量。
      b. 优化数据库访问。参考2.3
      c. 禁止外部访问链接(盗链), 比如图片盗链。
      d. 控制文件下载。
      e. 使用不同主机分流。
      f. 使用浏览统计软件,了解访问量,有针对性的进行优化。

      2.7 您是否用过模板引擎? 如果有您用的模板引擎的名字是?
      Smarty

      2.8 请介绍Session的原理,大型网站中Session方面应注意什么?

      2.9 测试php性能和mysql数据库性能的工具,和找出瓶颈的方法。

      2.10 Proposer régulièrement tous les liens dans une page web.

      2.11 Présenter les principes des solutions SSO (single sign-on) courantes (comme les dedecms intégrant le passeport de discuz).

      2.12 Quelles sont les caractéristiques du framework PHP sur lequel vous avez écrit, quels problèmes il résout principalement et ses différences par rapport aux autres frameworks.

      2.13 Quelles sont les différences en matière d'optimisation des performances entre les grands forums/systèmes d'articles d'actualité/sites Web SNS ?

      2.14 Applications d'album photo : il est nécessaire de pouvoir sélectionner et télécharger plusieurs fichiers en même temps. en même temps dans le navigateur. L'image doit pouvoir être recadrée et le package compressé doit être décompressé côté serveur. Peut télécharger un seul fichier jusqu'à 50 Mo. Une barre de progression s'affiche pendant le processus de téléchargement. Chaque image peut générer des vignettes de quatre tailles et les fichiers vidéo doivent être convertis en flv pour la lecture flash. Décrire les différents types de logiciels open source à couvrir et leurs utilisations simples.
      Un groupe de singes s'alignent en cercle et sont numérotés selon 1, 2,..., n. Ensuite, commencez à compter à partir du 1er, comptez jusqu'au mème, expulsez-le du cercle, commencez à compter par derrière, comptez jusqu'au mème, expulsez-le..., et continuez ainsi jusqu'à la fin. il ne reste plus qu'un singe, ce singe s'appelle le roi. Une programmation est nécessaire pour simuler ce processus, saisir m, n et afficher le numéro du dernier roi. Utilisez un programme pour simuler ce processus.

      3. Utilisation de base d'unix/linux
      3.1 Quelques méthodes pour afficher les informations de charge actuelle du système sous Linux.

      3.2 Touches de raccourci de base pour vim.

      3.3 Méthode d'amélioration de la sécurité SSH ; configuration du mode mot de passe et du mode clé rsa.

      3.4 rpm/apt/yum/ports Commandes de base pour l'installation, la requête et la suppression des packages.

      3.5 Format de base du Makefile, commandes de compilation et de connexion gcc, différence entre -O0 et -O3.

      3.6 Utilisation de base de gdb, strace, valgrind.

      4. Modèle de boîte Front-end, HTML, JS
      css.
      Prototype en javascript.
      La portée de cet objet en JavaScript.
      La différence de bouillonnement d'événements entre IE et Firefox.
      Que sont le mode bizarre, le mode standard et le mode quasi-standard.
      Définition de la DTD
      Hacks courants pour IE/firefox.
      firefox, l'outil de débogage front-end js/css sous IE.

      5. Comment comprendre le comportement dans l'architecture ThinkPHP 3.0 trois (noyau + comportement + pilote) ?
      Core + Behaviour + Driver
      L'abréviation officielle de TP est : CBD
      Ce problème a été expliqué en détail dans le manuel du TP. .
      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.
      Comportement : le comportement joue un rôle décisif dans l'architecture de la nouvelle version de ThinkPHP. Au-dessus du cœur du système, il existe de nombreux bits d'extension de balise, et chaque position de balise peut exécuter son propre comportement indépendant à son tour. C'est ainsi que sont nées les extensions comportementales, et de nombreuses fonctions du système sont également complétées par des extensions comportementales intégrées. Toutes les extensions comportementales sont remplaçables et additives, constituant ainsi la base de l'assemblage du cadre sous-jacent.
      Pilote : pilote de base de données, pilote de cache, pilote de bibliothèque de balises et pilote de moteur de modèles, ainsi que des extensions de classe externes.
      Le mieux est de télécharger un document et de le lire. Fondamentalement, toutes les fonctions de TP auront des descriptions et des exemples très détaillés.

      Cadre. En fait, il s'agit d'un produit semi-fini d'une certaine application, d'un ensemble de composants que vous pouvez choisir et utiliser pour compléter votre propre système. Pour faire simple, vous utilisez la scène installée par d’autres et vous jouez. De plus, les frameworks sont généralement des logiciels matures et continuellement mis à jour.
      Pourquoi utiliser des cadres ?

      Le développement de systèmes logiciels étant devenu très complexe aujourd'hui, en particulier les logiciels côté serveur, la conception implique trop de connaissances, de contenus et de problèmes. Utiliser les frameworks matures d'autres personnes à certains égards équivaut à demander à d'autres de vous aider à effectuer certains travaux de base. Il vous suffit de vous concentrer sur la conception de la logique métier du système. De plus, le cadre est généralement mature et robuste, et il peut gérer de nombreux problèmes détaillés du système, tels que le traitement des transactions, la sécurité, le contrôle des flux de données et d'autres problèmes. De plus, les frameworks sont généralement utilisés par de nombreuses personnes, donc la structure est très bonne, donc l'évolutivité est également très bonne, et elle est constamment mise à jour, et vous pouvez directement profiter des avantages des mises à niveau du code d'autres personnes.

      Le framework constitue généralement la couche intermédiaire entre la plateforme applicative de bas niveau (telle que J2EE en Java) et la logique métier de haut niveau.

      ThinkPHP est un framework PHP open source, né pour simplifier le développement d'applications au niveau de l'entreprise et le développement agile d'applications WEB

      Initialement connu sous le nom de FCS, il a été officiellement renommé ThinkPHP le jour du Nouvel An. en 2007, et il fait suite à l'accord open source Apache2 publié. L'architecture idéologique initiale est issue de Struts.Plus tard, après des améliorations et des améliorations continues, elle a également appris de nombreux excellents cadres et modèles étrangers, en utilisant la structure de développement orientée objet et le modèle MVC, intégrant les idées Action et Dao de Struts et la bibliothèque TagLib de JSP. ), le mappage ORM et le mode ActiveRecord de RoR, qui encapsule CURD et certaines opérations courantes, le mode d'entrée unique, etc., ont des performances uniques en termes de moteur de modèles, de mécanisme de mise en cache, de mécanisme d'authentification et d'évolutivité

      Utiliser avec ThinkPHP, vous pouvez Développez et déployez des applications plus facilement et plus rapidement. Bien entendu, pas seulement les applications de niveau entreprise, tout développement d'application PHP peut bénéficier de la simplicité, de la compatibilité et de la rapidité de ThinkPHP. Simplicité, rapidité et praticité sont les principes du développement de ThinkPHP. À cette fin, ThinkPHP continuera d'absorber et d'intégrer de meilleures technologies pour assurer sa fraîcheur et sa vitalité, et fournir les meilleures pratiques pour le développement d'applications WEB !

      En tant que solution de développement globale, ThinkPHP peut résoudre la plupart des besoins en matière de développement d'applications, car il inclut l'architecture sous-jacente, le traitement de compatibilité, la bibliothèque de classes de base, la couche d'accès à la base de données, le moteur de modèles, le mécanisme de cache, le plug-in. dans le mécanisme, l'authentification des rôles, le traitement des formulaires et d'autres composants couramment utilisés, et il est plus pratique pour la transplantation multi-versions, multi-plateformes et multi-bases de données. Et chaque composant est soigneusement conçu et perfectionné, et le processus de développement d'applications ne doit se concentrer que sur votre logique métier.

      Recommandations associées :

      troisièmes questions d'entretien php - Bases du langage PHP (partie de base) Questions d'entretien avancées php Questions d'entretien php junior Questions d'entretien php mysql

      Questions d'entretien PHP courantes et techniques de réponse en 2017

      8 questions d'entretien PHP reflètent votre compréhension de 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:php.cn
      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