Maison  >  Article  >  cadre php  >  Drupal compare avec thinkphp pour voir l'environnement open source national

Drupal compare avec thinkphp pour voir l'environnement open source national

青灯夜游
青灯夜游avant
2021-09-29 19:50:042753parcourir

Aujourd'hui, cet article vous donnera une comparaison entre ThinkPHP et Drupal, à travers laquelle vous pourrez voir l'état actuel des industries du logiciel chinoises et étrangères, et de l'environnement open source national !

Drupal compare avec thinkphp pour voir l'environnement open source national

Le logement, le mariage, les soins médicaux, l'éducation et les soins aux personnes âgées sont chacun une grande montagne. « Gagner de l'argent » doit être la priorité absolue. Qui a le temps de gagner de l'argent ? Par conséquent, ThinkPHP, créé par seulement deux développeurs principaux, est devenu l'espoir de beaucoup de gens. D'un autre côté, il n'y a pas de « programmeurs qui ne mangent que de la nourriture pour les jeunes ». Lors des rassemblements de la communauté des logiciels open source, nous voyons souvent des gens dans la cinquantaine. et la soixantaine toujours souriants dans les yeux. En parlant de technologie, ils recherchent le sens de la vie et ne sont pas trop dérangés par leur gagne-pain. Ils injectent l'accumulation de leur vie dans l'open source. Ils rêvent que ce qu'ils font peut éclairer le monde et transformer leur vie. vit dans de grandes œuvres qui seront transmises avec la civilisation humaine. Drupal a donc été salué par tout le monde et a rapidement navigué vers la mer d'étoiles. Cet article raconte une triste histoire, en réfléchissant à l'endroit où devraient aller les personnes qui lisent le même texte. Cette histoire devrait être connue de plus de gens.

Comparez ThinkPHP et Drupal pour voir l'état actuel de l'industrie du logiciel chinoise et étrangère

Parler de ThinkPHP et Drupal (traduit en chinois par "goutte d'eau") rendra de nombreux développeurs curieux, mais du point de vue du développement des écosystèmes logiciels chinois et étrangers , c'est vraiment un bon point de départ pour la discussion. Cet article fait quelques comparaisons entre les deux systèmes sous divers aspects, mais la comparaison n'est pas l'objectif principal de la rédaction de cet article. Les différences entre les industries chinoises et étrangères du logiciel, ainsi que certaines réflexions qui en découlent, aident les développeurs à planifier leur carrière et fournissent une base de décision aux décideurs informatiques.

Les deux systèmes sont des applications PHP open source et gratuites. Commençons par une brève introduction :

ThinkPHP :

Positionnement du produit : cadre de développement PHP, les développeurs peuvent continuer à développer et à construire leurs propres systèmes d'application sur cette base.

Agence de développement : Développée par la société nationale « Shanghai Dingxiang Information Technology Co., Ltd. »

Fondateur : Liu Chen, pas beaucoup d'informations, Baidu Query est un consultant senior pour les logiciels open source, un programmeur PHP senior, le PDG de Kanyun, plus plus de 15 ans d'expérience dans le développement et la gestion de produits Internet, les principaux domaines de recherche incluent l'architecture et le développement d'applications Web, la conception de l'expérience utilisateur des produits, engagé dans l'industrie open source nationale

Durée de développement : premier né début 2006

Protocole open source : Apache 2

Adresse du site Web officiel :http://www.thinkphp.cn/

Groupe d'utilisateurs : Les petites et micro-entreprises chinoises jouissent d'une grande réputation dans le cercle des développeurs nationaux. Son site Web officiel se décrit comme « le framework PHP le plus influent et le pionnier. en Chine » «

Cas célèbres : 56 Group, Lenovo Question Bar, CYTS Happy Travel, Pocari Sweat, Starbucks, Metersbonwe's Bangou Mall, TCL's online mall, Sina WeChat, Aoxing, China Cheyou Technology, etc.

Taille de l'équipe : Là-bas Il n'y a pas de données officielles, mais chaque fichier du framework contient des informations sur l'auteur. Selon ces statistiques, il y a un total de 7 personnes, dont deux développeurs principaux (contribuant à plus de 90 % du code). Ces données ne sont pas disponibles, y compris les développeurs. qui contribuent à l'écosystème communautaire, selon les résultats de la requête de la société Dingxiang sur la plateforme Qichacha, la taille de l'entreprise est inférieure à 50 personnes et le nombre d'assurés est de 3. Fichiers système : calculés sur la base de la version actuelle 6.0.7 , fichiers d'installation initiale Nombre de 569, occupant 2,41 Mo d'espace

Drupal : Positionnement du produit : un système back-end complet (données back-end et centre de contrôle), utilisé pour le back-end des applications , mini-programmes, sites Web, Internet des objets, etc. Développement

Organisation de développement : Une communauté open source à but non lucratif organisée par la Fondation Drupal, co-construite par plus de 200 pays à travers le monde

Fondateur : Initié à l'origine par La thèse de doctorat universitaire de Dries en 2008 était "Applications Java" "Analyse des performances et technologie d'analyse d'optimisation", James Gosling, l'inventeur de Java, est membre du comité de soutenance de son doctorat. L'adresse de la page d'accueil personnelle de Dries est https. ://dri.es/about

Durée de développement : premier né en 2000

Accord open source : GPL 2.0

Adresse officielle du site Web : https://www.Drupal.org/

Groupe d'utilisateurs : entreprises, gouvernement agences, universités, particuliers, etc. du monde entier, y compris la part de marché des 500 plus grandes entreprises mondiales Plus de 80%, le célèbre IDE : phpstorm intègre directement le nouveau projet Drupal

Cas célèbres : National : Huawei, JD .com, Baidu, Tencent, Tsinghua, Peking University, Guizhou Municipal Government Station Group, Zhenkongfu, etc. étrangers : Tesla, Google, Honda, Qualcomm, Nations Unies, Union européenne, Harvard University, MIT, Disney, NASA, Pfizer, etc.

Taille de l'équipe :

Possède la communauté open source la plus grande et la plus active au monde, avec plus de 1 800 développeurs principaux, actifs. Il y a plus de 120 000 contributeurs étatiques (code, documentation, concepteurs, etc.), dont plus de 2 000 personnes dans la sous-communauté chinoise, et la principale entreprise de transport Acquia compte plus de 1 100 employés. Actuellement, environ 1 300 soumissions de code en moyenne sont générées par semaine.

Fichiers système : sur la base de la version 9.1.7 actuelle, le nombre de fichiers initialement installés est de 18 770, occupant 71,2 Mo d'espace

Pourquoi ThinkPHP et Drupal :

L'un est un framework populaire en Chine et l'autre est un système back-end complet qui est populaire à l'échelle internationale (c'est aussi le système le plus puissant et le plus flexible au monde, à en juger par leur taille, ils n'en font pas partie). la même classe de poids. Il n'y a pas de comparaison en termes de positionnement sur le marché, mais les explorer est d'une grande importance pour comprendre l'écologie des logiciels chinois et étrangers. De plus, et si je vous disais directement que Drupal peut faire tout ce que ThinkPHP peut faire. , et c'est plus élégant et concis ? Les choses deviennent intéressantes maintenant, continuons.

Habituellement, les développeurs nationaux qui utilisent Drupal sont des vétérans du développement avec de nombreuses années d'expérience. Ils sont sortis de divers systèmes étape par étape. Ils doivent connaître ou comprendre ThinkPHP dans une certaine mesure, mais les développeurs qui utilisent ThinkPHP ne comprennent pas nécessairement. Drupal, la raison pour laquelle les développeurs qui utilisent ThinkPHP choisissent ThinkPHP est généralement que le framework fournit une base commune que le PHP sous-jacent, et qu'il est flexible et gratuit. Comparé au développement secondaire de systèmes tels que Imperial CMS, il n'est pas limité et. peut s'implémenter à volonté, mais devant Drupal, les choses deviennent différentes, ce qui peut donner aux développeurs l'impression d'avoir trouvé un trésor. Ici, nous devons présenter brièvement l'architecture système de Drupal. couches :

La couche inférieure :

est la couche de framework, basée sur le framework Symfony populaire. Symfony peut être considéré comme le standard de l'industrie pour PHP et le framework le plus célèbre au monde. framework, sont également basés sur ou proviennent de Symfony. Comprendre Symfony Framework Les développeurs peuvent rapidement se lancer dans le développement de Drupal. Fabian, l'auteur du framework Symfony, est une autre de ses œuvres bien connues est le moteur de modèles Twig. est également utilisé dans Drupal. Drupal est l'exemple le plus célèbre de Symfony. Son site officiel répertorie Drupal en premier, et la communauté Drupal participe également aux contributions au code Symfony.

La deuxième couche :

est la couche de données, représentée par des entités, fournissant diverses données vers le haut. L'encapsulation de la base de données appartient à cette couche. Le concept ORM et le concept de modèle dans ThinkPHP sont similaires à ce à quoi ressemblait le concept d'entité. premiers jours.

La troisième couche :

Les développeurs gèrent diverses logiques métier au niveau de cette couche

Il convient de noter ici que lorsque les développeurs utilisent Drupal, ils ne doivent pas nécessairement appeler couche par couche, mais peuvent le faire. span.Directement face à une certaine couche, donc lors du développement directement vers la couche framework, l'ensemble du système peut être utilisé comme framework, tout comme les développeurs ThinkPHP utilisent directement le framework ThinkPHP. C'est pourquoi Drupal peut faire tout ce que ThinkPHP peut faire. c'est que la différence est que Drupal utilise le framework Symfony. En passant, ThinkPHP est profondément influencé par Symfony, et adopte même directement certains de ses composants. Il s'inspire fortement du framework Symfony sur de nombreux aspects (tout créateur mérite le respect, donc là). Il n'est pas nécessaire d'utiliser le mot "plagiat". Et en utilisant "apprendre de"), le processus principal est presque le même, mais il y a une énorme différence de maturité et de détails. Cet écart est clairement illustré par un exemple :

Dans. À l'époque où les ancêtres humains nouaient des cordes pour compter, un fruit était un fruit, un poisson est un poisson. Lorsque le chiffre « 1 » derrière lui est abstrait de choses spécifiques, l'humanité a fait un énorme bond en avant. moins que l'utilisation du feu, puis l'invention des nombres et des mathématiques, etc., dans le temps et dans l'espace, les êtres humains ont constamment exploré et abstrait le monde. À travers d'innombrables accumulations, nous avons la civilisation d'aujourd'hui. plus le degré d’abstraction est élevé, plus cela signifie fort et plus il est direct vers l’essence.

De nombreux grands travaux nécessitent énormément de main d'œuvre et de temps pour s'accumuler, alors quelle est l'ampleur de l'écart d'accumulation entre ThinkPHP et Symfony, ou entre ThinkPHP et Drupal ? Ce que je peux vous dire ici de manière directe et décisive, c'est qu'il existe un écart entre l'école primaire et l'université, entre les collèges et les lycées. La raison principale est la taille de la communauté, l'écologie et le temps. ThinkPHP et Symfony sont tous deux des frameworks et sont les concurrents les plus directs. Pour exister, ThinkPHP a besoin d'un chemin d'innovation indépendant, mais il emprunte beaucoup à Symfony. C'est une chose très embarrassante. En tant que développeur, pourquoi ne pas l'utiliser directement ? à propos de Symfony ? Le framework CI (CodeIgniter) au même niveau s'est développé de manière totalement indépendante. Vous ne pouvez pas voir l'ombre de ThinkPHP dans de nombreux classements mondiaux. Cependant, en Chine, vous pouvez voir l'ombre de ThinkPHP dans de nombreuses informations de recrutement. phénomène étrange. Parce que ThinkPHP est un produit entièrement local, même les documents d'annotation sont en chinois. C'est sur cette base que cet article choisit ThinkPHP comme point de départ pour étudier le statut des logiciels chinois et étrangers.

Qu'est-ce qu'un bon système ? De quoi avons-nous besoin ?

Comme le dit le proverbe, si vous voulez bien faire votre travail, vous devez d'abord affiner vos outils. Voici quelques points pour illustrer les caractéristiques qu'un excellent système devrait avoir. Ci-dessous, nous comparerons ThinkPHP et Drupal :

. Exhaustivité :

La soi-disant exhaustivité peut être considérée comme un outil ou un composant qui a été conçu en tenant compte de toutes les situations. Par exemple, la fonction d'interception de chaînes fournie nativement par PHP tronquera les caractères UTF-8 et produira des caractères tronqués, et vous avez. a conçu une fonction d'interception, non seulement elle ne fera pas cela, elle ne tronquera pas les mots anglais, et elle prendra également en compte le fait de ne pas tronquer les balises en HTML. Votre outil sera alors plus complet que la fonction native PHP Once. vous constatez qu'il y a des colonnes qui ne peuvent pas être satisfaites, vous devez l'améliorer pour améliorer la complétude, la conception de nombreuses parties de Drupal est "complète". Bien que Drupal continue d'explorer et d'évoluer, ce niveau d'exhaustivité dépasse de loin ThinkPHP. Par exemple, le système de routage de Drupal peut naturellement prendre en charge le routage en fonction du nom de domaine, du protocole, de la méthode HTTP, des formats de données, des options, etc., et il existe une classification des priorités lorsqu'ils correspondent tous, et ceux-ci ne sont pas entièrement disponibles dans ThinkPHP. L'exhaustivité de la conception de ce composant repose sur la compréhension approfondie de la nature de la transaction et sur une grande quantité d'expérience en matière de développement. Elle permet aux humains de s'appuyer sur les fondations de ceux qui l'ont précédé.

Standardisation : 

La standardisation est la condition préalable à une collaboration à grande échelle. La structure hiérarchique du système, la communication entre systèmes, les composants découplés, etc. sont tous indissociables de la standardisation. Drupal est entièrement orienté vers les documents RFC plutôt que vers son propre système. Les commentaires ou les références aux RFC sont souvent visibles dans les discussions. Les documents RFC sont la pierre angulaire de l'Internet informatique. Ils sont similaires aux normes nationales courantes sur les produits. Ils sont souvent ignorés par les utilisateurs, mais ils sont extrêmement importants.

Intégrité :

Division coopérative du travail. Lorsque les composants développés sont assemblés et que tout le monde les utilise, cela constitue la complétude. Les gens n'ont alors pas à réinventer la roue eux-mêmes et l'intégrité favorisera à son tour l'intégrité. amélioration de l'exhaustivité. Symfony et Drupal résolvent le problème d'intégrité sous forme de composants et de modules.

Faible couplage :

Les composants de la conception du système doivent être découplés autant que possible, afin de donner à chaque composant plus de marge de développement et d'amélioration, et les composants défectueux peuvent également être facilement remplacés par Drupal. conception pour se connecter Le noyau est modulaire. Les utilisateurs peuvent remplacer n'importe quel fichier principal dans l'espace utilisateur sans le modifier directement pour éviter des fonctions insuffisantes et entraver les mises à niveau. Relativement parlant, ThinkPHP est étroitement couplé.

Maîtriser les limites :

Un bon système est forcément un système avec un bon contrôle, mais c'est vraiment un peu difficile, et les personnes bienveillantes ont des opinions différentes. De manière générale, la direction générale ou le système de base doit être. simple. Voici quelques exemples. À titre d'exemple, ThinkPHP prend en charge la détermination des contrôleurs de routage en fonction des paramètres de routage, c'est-à-dire : Route::get(':action/blog/:id', 'Blog/:action');, mais Drupal le fait. ne permet pas cela. L'implémentation est similaire. La fonction est généralement implémentée à l'aide d'un contrôleur proxy. En bref, l'effet ne doit pas être implémenté au niveau du routage, mais au niveau du contrôleur. Cela rend le système de routage plus concis et l'architecture du système plus claire. .Cette idée traverse Drupal, ce qui rend l'épine dorsale du système Drupal très simple et propre. Lorsque vous souhaitez une fonction détaillée, vous entrez d'abord le grand affluent correspondant, puis entrez différents affluents détaillés. Mais quelle voie préférez-vous ?

Simplicité :

Pour être simple, le système doit avoir des processus clairs, des appels unifiés et des règles cohérentes. Les extras ne sont pas autorisés ou doivent être évités autant que possible. L'avantage est que c'est facile à utiliser. les nouveaux arrivants à apprendre, et il est très pratique de suivre et de dépanner.

Vitalité : 

La vitalité du système réside également dans la durabilité. L'écosystème et les développeurs sont la nourriture du système. Nous en parlerons ci-dessous, mais nous l'ignorerons ici.

Comparaison entre ThinkPHP et Drupal :

En comparant ThinkPHP avec Drupal, en général, ThinkPHP a une abstraction et une accumulation insuffisantes. C'est une lacune fondamentale. C'est comme un enfant, alors que Drupal en est un qui a connu des années. Les adultes en savent plus, connaissent les principes généraux des choses et vont plus loin. Supposons que ThinkPHP fournisse des matériaux de construction de base tels que du béton, des briques, des barres d'acier, etc. et d'autres problèmes architecturaux, et Drupal fournit non seulement des matériaux de base, mais également une équipe de construction et un institut de conception. Dans de nombreux cas, il vous suffit de dire quel type de sensation et de fonction vous souhaitez que le bâtiment ait (ce que vous rencontrez). (les exigences ont généralement été rencontrées par d'autres, formant un grand nombre de modules de contribution, qui peuvent être installés). Bien entendu, si vous êtes intéressé, vous pouvez également participer au processus de construction pour obtenir vos résultats personnalisés.

Ce chapitre compare les deux au niveau de l'architecture technique. Si vous n'êtes pas développeur, ou n'êtes pas intéressé par des technologies spécifiques, vous pouvez sauter directement ce chapitre et passer au chapitre suivant. Voici les dernières versions de ThinkPHP 6.0. .7 et Drupal 9.1.7, en raison de l'espace limité, sélectionnez uniquement certains contenus importants à des fins de comparaison :

Événements :

Dans ThinkPHP, les événements sont positionnés pour remplacer le comportement d'origine et le mécanisme Hook. On peut voir que l'auteur ne réalise pas la différence essentielle entre les événements et les hooks. Le même point est que du code tiers est utilisé pour intervenir dans le courant. " événements", cela conduit également à des problèmes de mise en œuvre. Il est lâche et complexe, et présente des déficiences fonctionnelles majeures. Par exemple, les événements ThinkPHP n'ont pas de concept de priorité, ce qui est crucial lorsqu'il y a des exigences de commande. En même temps, il n'y a pas d'événement Mécanisme de terminaison de propagation.Par exemple, ThinkPHP ne nécessite pas l'implémentation de classes d'événements.En fait, pour gérer les événements, les paramètres doivent généralement être transmis et les résultats du traitement doivent être renvoyés à la source de l'événement, donc à la classe d'événement. est nécessaire. ThinkPHP est très basique et Drupal utilise le service de répartition d'événements pour traiter tous les événements, ce qui est très important pour les abonnés et il n'y a aucune restriction particulière sur les auditeurs. Pour traiter la logique liée aux événements n'importe où dans le système, il vous suffit de le faire. face au service de répartiteur d'événements.

Middleware :

Il existe un concept de "middleware" dans ThinkPHP et Drupal, mais leur positionnement est très différent. Les fonctions implémentées par le middleware dans ThinkPHP sont gérées par le répartiteur d'événements dans Drupal. Par exemple, le document ThinkPHP mentionne que le middleware est principalement utilisé pour intercepter ou filtrer les requêtes HTTP des applications. C'est le cas dans Drupal. La répartition des événements de requête est la même que celle du middleware de routage et du middleware du contrôleur. .La fonction principale du middleware dans Drupal est de changer le noyau de traitement HTTP d'un à plusieurs., L'architecture logique de Drupal est beaucoup plus élégante et claire que celle de ThinkPHP. Cela est également dû à une compréhension insuffisante du mécanisme d'événement par ThinkPHP. la structure du système est désordonnée et pose le fardeau des futures mises à niveau

Fichier d'entrée :

Deux Les fichiers d'entrée des deux utilisateurs sont très simples et la logique est relativement similaire. Il y a trois différences principales :

1. l'objet de requête dans le noyau de traitement du fichier d'entrée, incarnant littéralement « tout système Web convertit les requêtes en Le concept de « système réactif », et bien que la méthode d'exécution du service HTTP de ThinkPHP soit également disponible, elle n'est pas reflétée à l'entrée, mais il n'y a pas de différence essentielle. La grande différence est que ThinkPHP ne prend pas en charge la fonction "sous-requête", c'est-à-dire la possibilité de se soumettre des demandes pour traitement pendant que le système est en cours d'exécution. le système et revenir. Cette fonction a un grand impact sur l'architecture du système (dans tout le système, en plus de ne pas affecter l'état environnemental de la requête principale, les sous-requêtes doivent également prendre en compte les performances. ), ce point peut être mieux vu le fait que l'architecture système de Drupal est beaucoup plus puissante et complète que celle de ThinkPHP, Drupal est mieux à même de gérer une logique métier complexe

2. Véritable simplicité, Drupal n'a qu'un seul fichier d'entrée au niveau mondial. et le backend d'une seule application, il n'y a qu'une seule entrée. Bien que les utilisateurs puissent en définir plusieurs, plusieurs n'est pas recommandé. Cela réduit la complexité, reste simple et jette les bases du système d'alias d'URL, et ThinkPHP dispose d'un mécanisme complexe à entrées multiples. , en particulier dans les applications multiples, rendra également difficile la prise en charge des alias d'URL

3. Drupal transmet le chargeur de classes au cœur de traitement dans l'état initial, qui prend naturellement en charge le remplacement ou la modification des classes, mais ThinkPHP ne le prend pas en charge. . Il se charge simplement. Lorsque vous devez modifier le chargeur de classe, il ne peut pas être obtenu. Cela entraîne une grande perte de flexibilité. Par exemple, de nombreuses classes ne peuvent pas être remplacées par celles de l'utilisateur. Classe "thinkHttp" C'est plus gênant.

Applications multiples :

Les deux prennent en charge les applications multiples, c'est-à-dire que plusieurs systèmes réutilisent le même ensemble de code, mais Drupal est beaucoup plus simple en termes de méthodes spécifiques

Programmation orientée interface :

De nombreuses implémentations dans ThinkPHP, aucune interface n'est extraite des classes, et même certaines classes importantes n'ont pas d'interface, telles que :

thinkApp

thinkRequest

Elles sont si essentielles et importantes, mais elles n'ont pas leurs propres interfaces ThinkPHP indépendantes. n'est pas programmé strictement en fonction des interfaces. La flexibilité est considérablement réduite. Par exemple, si je veux implémenter ma propre classe d'application pour remplacer thinkApp, je ne peux pas le faire, je ne peux que modifier le noyau, ce qui pose problème à chaque fois. Je mets à niveau. Cependant, dans Drupal, l'interface est strictement suivie et l'architecture est complètement Pour les interfaces, toutes les contraintes de type de paramètre sont des interfaces. Nous pouvons remplacer n'importe quelle classe fournie par le noyau sans modifier le noyau, y compris la classe du noyau HTTP la plus importante. : DrupalKernel, qui est similaire à la classe d'application de ThinkPHP.

En plus d'affecter l'évolutivité, ne pas suivre strictement la programmation de l'interface présente également de nombreux autres inconvénients, tels qu'être peu convivial pour les IDE, difficile à automatiser l'extraction de documents, commentaires de code sans héritage, discussions collaboratives peu pratiques, etc.

Système de routage :

Citant la phrase originale du tutoriel officiel de ThinkPHP :

"ThinkPHP n'est pas obligé d'utiliser le routage. Si aucun routage n'est défini, vous pouvez directement utiliser la méthode "contrôleur/opération" pour y accéder"

Cela se voit que l'auteur du framework ne comprend pas la nature du routage, comme mentionné ci-dessus. Le numéro 1 n'a pas encore été résumé. La méthode dite "contrôleur/opération" devrait également appartenir au routage par défaut ou au routage de chemin interne, plutôt qu'à l'absence de routage. Ce point en apparence anodin est en réalité très important, mettant en jeu des fonctions cognitives essentielles, et entraînant alors des comportements très différents.

Le routage est une bifurcation sur la route après l'entrée dans le système. Il doit exister de nombreuses logiques métier doivent être traitées ici, telles que le contrôle des autorisations, la conversion des paramètres, le traitement des alias de chemin, le traitement du langage, etc. Dans ThinkPHP, on considère que il ne peut y avoir de routage, ce qui conduit à de tels résultats cognitifs qui rendront inévitablement les choses lâches et compliquées, comme la redondance du code, une utilisation incohérente, etc.

Le traitement des entrées n'est que l'une des deux fonctions principales du routage. L'autre fonction majeure est le traitement des exportations, qui est la génération d'URL à l'échelle du système. Ceci est crucial pour le traitement des alias d'URL, la négociation de langue, le référencement, etc., mais. il n'y a que des fonctions simples dans ThinkPHP. La mise en œuvre du système de routage n'a pas encore pleinement pris en compte la responsabilité du système de routage. Par exemple, une exigence est soulevée ici :

Comment l'utilisateur peut-il ajouter "target="_blank"" au fichier. URL de l'ensemble du système dans une fonction personnalisée ?

Injection de conteneurs et de dépendances :

Ce concept et ce nom proviennent du framework Symfony Pour plus de détails, voir :

https://symfony.com/doc/current/components/dependency_injection.html

En bref Le. L'idée principale est de mettre en place un gros objet central dans le système, qui peut également être appelé objet parent. Il est responsable de la collecte, de la sauvegarde et de l'instanciation automatique de nos objets couramment utilisés dans Symfony, ce gros objet est appelé conteneur, et les objets qui y sont enregistrés sont appelés services. , la définition du service peut être fournie statiquement en YAML ou dynamiquement en mode fournisseur de services. La "définition" a un certain format. Lorsque nous avons besoin d'un service, l'objet conteneur sera instancié. l'objet de service selon la définition, puis enregistrez-le et renvoyez-le. Définition en cours Cela implique des concepts tels que les classes, les paramètres, les méthodes d'usine, les rappels post-instanciation, les configurateurs, les propriétés publiques et privées, l'héritage des fonctionnalités, l'instanciation retardée, etc. Il y aura également un processus de compilation de services avant la formation du conteneur pour gérer des fonctions avancées telles que les groupes de services et les modifications de paramètres, chaque service dans le conteneur a un ID, appelé ID de service, et l'objet de service est obtenu via cet ID où. il est utilisé en plus de sauvegarder le service, le conteneur enregistre également les paramètres du conteneur, les alias de service, etc.

Le concept de conteneur de ThinkPHP a l'ombre de Symfony, mais il est encore très jeune et élémentaire. Sa mise en œuvre est loin d'être simple et prête à confusion. Par exemple, il n'y a pas de concept clair d'ID de service et d'objet de service dans le conteneur Symfony. doit avoir un ID de service correspondant, et ThinkPHP appelle un résumé de concept similaire, qui peut être un identifiant ou un nom de classe, mais certaines méthodes de conteneur l'utilisent comme nom de classe, telles que :

thinkApp::register

thinkApp:: getService

Il semble que l'auteur veuille être aussi flexible que possible, mais cela conduit à une confusion causée par des incohérences. Dans ThinkPHP, le concept de « service » a une définition distincte (un peu comme les services du système d'exploitation), mais en substance. c'est toujours un service Symfony, juste pour qu'un traitement spécial soit requis. Dans Symfony, mettre des services dans des conteneurs est appelé "collecter" des services, ou "les injecter" dans le conteneur. Dans ThinkPHP, cela est appelé "lier" des services au conteneur. . Comme son nom l'indique, les conteneurs sont utilisés pour contenir des objets, pourquoi est-ce appelé reliure ? Ce type de nom est très difficile à prononcer, et il existe de nombreux noms qui ne transmettent pas la signification. Par exemple, ThinkPHP appelle l'opération de post-instanciation de l'objet dans le conteneur en cours d'exécution une opération de « post-exécution », et non une « opération de post-exécution ». "Opération post-instanciation". Il y a un dicton dans l'industrie informatique Dicton célèbre : "Qu'est-ce qui est difficile ? Mise en cache et dénomination." ThinkPHP doit être amélioré dans ce domaine. Certains noms actuels ne sont pas conviviaux pour les novices.

De plus, les services (dans ThinkPHP devraient être appelés classes, objets ou rappels liés au conteneur) peuvent également lier des services au conteneur. Cette fonctionnalité semble flexible, mais elle est très peu conviviale pour le suivi et le débogage du code, en ajoutant de nouvelles personnes. Il est difficile de prendre en main le système, et Drupal bénéficie de sa conception modulaire, qui permet une déclaration centralisée (car le module doit savoir de quels services dépend le service, et il peut également déterminer si un certain service existe grâce au mécanisme de compilation du conteneur) , de sorte que le suivi du code et le débogage soient aussi simples que possible, et il est également très pratique d'exporter la définition du service dans le conteneur d'exécution sans réellement instancier chaque service.

Façade :

Ceci est juste un concept dans ThinkPHP, qui est utilisé pour appeler statiquement la méthode dynamique de la classe packagée, c'est-à-dire utiliser la méthode statique pour proxy la classe au niveau de la méthode. Un ajustement formel et des instances internes sont toujours nécessaires. Objets, en fait, ce concept n'est pas nécessaire. Non seulement il est très hostile aux IDE, mais il viole également l'intention initiale de la conception des méthodes statiques PHP. manque de fonctions de conteneur dans ThinkPHP. Un tel concept n'existe pas dans Drupal, et son objectif fonctionnel est d'adopter uniformément la méthode statique Drupal::service ($ id) pour obtenir l'instance de service, puis le développeur peut appeler sa méthode dynamique par lui-même. . Si une instance différente est nécessaire, il peut la cloner lui-même. Cela évite également d'avoir à utiliser use pour introduire une classe proxy.

Fonction d'assistance

ThinkPHP a le concept de fonction d'assistance. Le document mentionne que son but est de profiter de la commodité des rappels automatiques de l'EDI. Ceci est équivalent aux méthodes statiques ou aux fonctions de raccourci fournies par "Drupal". " classe globale dans Drupal. Mais Drupal n'est pas dû à l'IDE, mais parce qu'il est plus pratique d'obtenir des services, car les fonctions PHP ou les méthodes de classe statique sont disponibles à l'échelle mondiale.

Contrôleurs et modèles :

Dans ThinkPHP, on pense que le contrôleur est utilisé pour effectuer une logique de traitement pré-métier. Il doit s'agir d'une classe PHP ou d'une fermeture. La logique métier est une question de "pattern". En fait, il s'agit d'une logique très rigide et dogmatique. Tout d'abord, le contrôleur peut être des rappels PHP exprimés sous n'importe quelle forme, y compris des fonctions, des méthodes d'instance de conteneur (définies avec des ID de conteneur), etc. Deuxièmement, en réalité, les limites de la logique métier ne sont pas si claires, et c'est le cas. Il est difficile de résumer le "modèle" puis de donner le nom. Encore une fois, le contrôleur devrait déjà être le début du traitement métier, et ce que fait le contrôleur dans le concept ThinkPHP devrait être traité dans le routage. ThinkPHP l'a déjà réalisé et l'a mentionné dans. le document.

Traitement multilingue :

En termes de mise en œuvre, ThinkPHP et Drupal sont tous deux basés sur l'anglais comme métalangage de développement. La mise en œuvre de la traduction de ThinkPHP est très simple et ne peut souvent pas répondre aux besoins réels, en particulier lors du développement international. applications (cela devrait être dû à une couverture insuffisante du champ d'application). Drupal dispose d'un système multilingue complet et a complètement traité les concepts suivants :

Problèmes de langue au singulier et au pluriel (certaines langues ont plus que du singulier et du pluriel). pluriel) problèmes contextuels ("peut" est traduit par "peut" ou " Qu'en est-il de "mai" ?) L'interface de traduction, la configuration et le mécanisme de collaboration de l'équipe de traduction de la langue du contenu du texte en JS, le traitement de la langue du texte de gauche, etc.

ThinkPHP n'en a pas, il réalise simplement la traduction du texte dans le modèle, la substitution de variables dans les instructions ; de plus, Drupal dispose naturellement de plusieurs mécanismes de négociation de langage, tels que les paramètres utilisateur, les préfixes d'URL, les informations de session. , les noms de domaine, les en-têtes HTTP, les identifiants d'agent utilisateur, etc., et prend en charge la personnalisation du mécanisme de négociation de langue via des plug-ins. Dans ThinkPHP, seules les URL, les variables d'en-tête HTTP, les cookies et les navigateurs sont pris en charge. les cookies pour transférer des informations linguistiques, vous pouvez rencontrer des problèmes juridiques lors du développement de systèmes internationaux. De nombreux pays exigent que le système demande explicitement aux utilisateurs s'ils peuvent utiliser leurs cookies de manière globale. Lors de l'utilisation de ThinkPHP sur Internet, les développeurs doivent résoudre eux-mêmes la plupart des problèmes de langue. Cependant, en fait, le système multilingue traverse l'ensemble du système et est très vaste et complexe. Puisque Drupal est un système co-construit au niveau international, le multilingue est l'un de ses points forts et il s'agit naturellement d'un système multilingue. cela seul peut dérouter les développeurs ThinkPHP.

Système de mise en cache :

Un système de mise en cache complet comporte trois éléments : le délai d'expiration, la balise invalide et le contexte. Drupal en a une implémentation complète, tandis que ThinkPHP n'implémente que l'heure et les balises, et n'implémente pas le contexte. contexte? En termes simples, il indique à qui appartient l'objet mis en cache et dans quelles conditions environnementales sous la même clé de cache KEY. Par exemple, les autorisations de l'utilisateur, le statut de connexion, la langue, l'adresse IP, la version du protocole, les informations sur le sujet, etc. appartiennent tous au cache. contexte.La même KEY doit lire différents objets de cache dans différentes conditions de contexte, ce qui est crucial pour la conception d'un système à grande échelle, et ThinkPHP oblige les développeurs à résoudre eux-mêmes le problème du contexte de cache. ne fournit pas de mécanisme de fusion de cache. Cela ne permettra pas le traitement hiérarchique du cache, qui est essentiel pour obtenir une mise en cache efficace.

Session :

Les développeurs utilisant ThinkPHP doivent résoudre eux-mêmes les problèmes liés à la session. Pourquoi ? Avec le développement de l'informatique aujourd'hui, seuls les petits et micro-systèmes utilisent un seul serveur, et la plupart des systèmes équilibreront la charge sur plusieurs serveurs. Par conséquent, les applications doivent nécessiter un état sans état, de sorte que les données de session ne peuvent pas être stockées localement. Ceci, parce que ThinkPHP est un framework qui ne peut pas fournir une solution existante pour le stockage des sessions dans la base de données, les développeurs doivent le gérer eux-mêmes. Drupal lui-même a pris en compte des éléments tels que l'équilibrage de charge et l'apatridie des applications, et les sessions ont été stockées dans la base de données. par défaut.Il peut être utilisé immédiatement.Bien que ThinkPHP offre des capacités d'extension, les développeurs doivent quand même payer beaucoup de coûts de main-d'œuvre pour mettre en œuvre le développement. Il y a un problème dans la mise en œuvre de la session de ThinkPHP : la session n'est pas enregistrée une fois le script terminé. mais à l'intérieur du script, exécutez, de sorte que lorsque l'utilisateur appelle die ou exit, la fonction d'arrêt soit enregistrée. Pour plus de détails, voir la fonction PHP :

register_shutdown_function

Base de données :

ThinkPHP et Drupal. prend en charge plusieurs bases de données. Cette fonctionnalité est disponible dans ThinkPHP. Drupal a créé un concept de « base de données distribuée » pour la décrire. Drupal n'a pas de concept de rendu spécial et utilise uniquement des identifiants métier pour distinguer les différentes bases de données. Les deux prennent également en charge la configuration maître-esclave et la lecture-écriture. séparation ; mais l'implémentation est évidente. Drupal est beaucoup plus élégant. Par exemple, dans la structure de données de la configuration de la base de données, Drupal utilise un tableau multidimensionnel. Le nom de la clé de premier niveau est l'identifiant de l'entreprise, le nom de la clé de deuxième niveau. est l'identifiant maître-esclave, et sa valeur est les informations de configuration de la connexion. Cette structure est très simple, si vous souhaitez implémenter un sous-système de planification de chargement de base de données, alors l'interface de cette structure est très simple, et dans la structure des données de configuration de ThinkPHP. , toutes les adresses d'hôte sont stockées sous une clé de tableau et tous les mots de passe sont stockés dans une autre. Sous la clé de tableau, etc., il y a également des noms d'utilisateur, etc. Une telle structure nécessite d'analyser à nouveau les informations de configuration lors de la génération des informations de connexion. La lecture et la modification ne sont pas intuitives, mais elles consomment également des performances du système, et l'interface du sous-système de planification de charge de la base de données est également plus complexe et très inélégante.

Les deux prennent également en charge plusieurs types de bases de données. Le noyau de Drupal prend en charge trois bases de données : mysql, pgsql et sqlite. De plus, le module communautaire implémente presque entièrement la prise en charge de toutes les bases de données couramment utilisées. les différences entre les différentes bases de données. Appelé « dialecte », le traitement des différents dialectes est effectué dans la couche pilote, fournissant une interface unifiée à la couche supérieure. En d'autres termes, la classe d'opérations de base de données de couche supérieure ne peut pas détecter quelle base de données est utilisée. La couche inférieure et adopte les spécifications SQL standard, masquant ainsi parfaitement les différences. Après avoir réalisé le découplage de la base de données, les développeurs de modules n'ont pas besoin de considérer la base de données que l'utilisateur utilise. La création, la requête, la modification, etc. entre différents types de bases de données au niveau de la couche application, cela peut être fait en un seul clic.

Concernant les opérations de base de données, Drupal étant un système complet, il a implémenté par défaut un ensemble de structures de stockage de données très avancées. Cette structure prend en charge la couche de données du système. Lorsque tout le monde est basé sur une structure de données unifiée, des choses merveilleuses se produisent. En conséquence, des personnes réparties dans le monde entier peuvent coopérer pour implémenter des applications riches de niveau supérieur. Cette structure a créé le célèbre concept d'entité. En conséquence, Drupal fournit également davantage d'opérations sur les données, telles que les requêtes d'entité, et les utilisateurs peuvent l'utiliser. prêt à l'emploi, Drupal est inclusif, les utilisateurs peuvent également définir leurs propres structures de données.

ThinkPHP ne peut pas prendre en charge la couche de données. ThinkPHP utilise des modèles pour gérer l'encapsulation des données et les opérations. Par rapport aux entités, les modèles sont des concepts très précoces et jeunes. Ils peuvent faire toutes les entités qu'ils peuvent faire, et vice versa. Le modèle ne prend pas en charge les contrôles de champ pour l'entrée, les formateurs pour la sortie, les contrôles d'affichage pour les formulaires et les vues, etc. La raison en est que ceux-ci nécessitent une implémentation de niveau supérieur.

Écologie et connexions open source chinoises et étrangères :

Après une comparaison complète, vous comprendrez que ThinkPHP peut faire tout ce que Drupal peut faire, et le faire mieux, mais pas l'inverse, car Drupal est un système complet système back-end. Connu sous le nom de système d'exploitation WEB, il a permis de faire plus de choses. Les exigences couramment utilisées sont pratiquement toutes disponibles dès le départ. Si les développeurs ThinkPHP veulent ces fonctions, ils doivent aller loin en se basant sur ThinkPHP. Mis à part les problèmes de qualité, la consommation de temps à elle seule est un chiffre étonnant (par exemple, avant la sortie de la version officielle de Drupal 8, ses différentes versions de développement ont été travaillées par plus d'un millier de développeurs internationaux de premier plan pendant cinq ans). De nombreux développeurs Drupal ne prennent vraiment pas la peine d'apprendre ThinkPHP ou d'autres frameworks, mais un phénomène très étrange peut être observé en Chine : pourquoi y a-t-il encore de nombreuses petites entreprises en Chine qui utilisent ThinkPHP ? (Vous pouvez vous en faire une petite idée en recherchant des informations de recrutement PHP sur différentes plateformes de recrutement). Il y a deux raisons pour expliquer cela :

Les échanges culturels sont bloqués :

Les échanges de culture chinoise et étrangère, de vie. , etc. sont toujours là. Il est limité à un petit nombre de personnes. La plupart des gens n'ont pas d'amis d'autres pays. Les principales raisons sont les barrières de réseau bien connues et la barrière de la langue devrait être la principale raison. Le pays se développe trop rapidement.À l'heure actuelle, la plupart des développeurs nationaux sont nés dans les années 70 et 90. La plupart de ce groupe de personnes ont de faibles compétences en communication en anglais, sont muettes en anglais ou ont souvent des difficultés à lire. n'accèdent pas aux matériels en anglais. Le niveau d'anglais des personnes nées en 2000 ou 10 est beaucoup plus élevé (grâce aux premiers professeurs, à Internet, etc.), ils seront mieux intégrés dans l'environnement international à l'avenir. Heureusement, la technologie est maintenant. développé, le niveau des logiciels de traduction est de plus en plus élevé et de plus en plus de personnes se consacrent à l'introduction de la technologie. Par exemple, Drupal a "Drupal" en Chine, "Aima Document Collection", "Shuidijian", ". Drupal University", "Think in Drupal", "Ninghao.com" et un grand nombre de plateformes technologiques. Ces plateformes ou blogs fournissent une énorme quantité de documents chinois presque complets et éliminent les barrières linguistiques. Il existe des sociétés de développement utilisant Drupal comme technologie de base dans des villes comme Pékin, Shanghai, Guangzhou, Chengdu, Nanning et Ningbo.

Phénomène de restauration rapide causé par le stress :

Les Chinois sont certainement l'une des personnes les plus travailleuses au monde. Ce travail acharné est en grande partie lié au stress. Le logement, le mariage, les soins médicaux, l'éducation et les soins aux personnes âgées sont chacun une grande montagne. la priorité absolue. Pour la plupart des gens ordinaires, maintenir l'ingéniosité et l'accumulation à long terme est trop risqué, et ils manquent de sentiment de sécurité. L'argent qui peut être gagné maintenant devrait être gagné en premier. L'avenir alors que la société se développe si rapidement ? Ce phénomène a un grand impact sur les fondations de notre pays. Les dommages dans le domaine scientifique sont énormes, et il en va de même dans l'industrie informatique en développement rapide. Le fardeau des développeurs de mon pays est trop lourd. .996 est même salué par les grandes entreprises. Ils effectuent depuis longtemps un travail de code farmer simple comme CURD. De nombreux développeurs n'ont tout simplement pas beaucoup de temps pour étudier, je dois passer du temps avec ma famille, mes enfants et. petite amie, j'ai très peu de temps pour me reposer, donc c'est encore plus difficile d'étudier en profondeur. Si j'ai du temps supplémentaire, je l'utilise généralement pour effectuer un travail privé et gagner de l'argent supplémentaire. Dans ce cas, tout le monde est habitué à ". manger de la restauration rapide". S'ils ont une houe, ils l'utilisent en premier. Ils n'ont pas le temps d'apprendre les excavatrices. Il est encore plus coûteux de développer des excavatrices. En fin de compte, cela rend difficile le développement de l'industrie open source de mon pays. Il n'existe que quelques projets open source à forte saveur commerciale, les petites entreprises s'appuient sur des subventions publicitaires et des projets open source pour attirer des projets commerciaux et gagner de l'argent (vous pouvez le ressentir en regardant la page d'accueil de ThinkPHP), tandis que les grandes entreprises choisissent. dans le but de cultiver des talents de réserve, d'éliminer les bugs gratuitement, etc. L'open source a une forte couleur de « sphère d'influence ». En général, l'amour et l'intérêt purs représentent une petite proportion, mais cela ne doit pas être imputé aux développeurs chinois. . Cela est dû à l'environnement de forte pression, et maintenant il y a Afin d'échapper au phénomène des villes de premier rang, de nombreuses personnes se rendent dans des villes de deuxième rang qui sont moins fréquentées et ont du temps libre. open source. Get APP (Luoji Thinking) prédit également que les centres d'innovation chinois pourraient se déplacer vers ceux qui disposent de villes de loisirs de second rang.

Au contraire, le terrain pour l'open source international est bien meilleur, et il est dominé par de nombreux pays développés. Ces pays sont généralement des pays providence. Par rapport à la pression, il y a beaucoup de marge de manœuvre pour que les gens fassent des choses. leurs intérêts. La première considération de nombreuses personnes impliquées dans l'open source est que les lecteurs peuvent en apprendre davantage sur le sens de la vie. Il existe un « modèle de besoins de Maslow » à ce sujet qui garantit la « qualité » et les avantages permettent aux développeurs d'ignorer l'âge et. travail. Lors de la conférence annuelle DrupalCon, vous pouvez J'ai vu que de nombreux développeurs sont très âgés, beaucoup dans la cinquantaine et la soixantaine. Ils parlent de technologie avec des yeux brillants et injectent l'accumulation de leur vie dans Drupal.

Bien sûr, les pays développés ne participent pas principalement à l'open source. Les pays anglophones sous-développés sont également des participants clés. Ils gagnent souvent des devises grâce à des projets commerciaux dérivés de l'open source. polarisation sérieuse. C'était autrefois Les Britanniques ont colonisé le pays, et la popularité de l'anglais parmi sa population haut de gamme est très élevée. Cela a rendu l'Inde hautement intégrée dans l'open source international et a par conséquent créé une force de développement de logiciels relativement élevée.

Planification de carrière des développeurs :

Cette section aborde les problèmes de planification de carrière des développeurs nationaux. Il y a toujours eu une voix dans la société nationale : "Les programmeurs mangent de la nourriture pour les jeunes", ce qui correspond généralement au seuil d'âge de 35 ans. on voit souvent certaines grandes entreprises licencier des développeurs plus âgés de 35 ans. Certaines entreprises ne peuvent pas recruter plus de 35 ans. Il est étrange qu'une personne de 35 ans ait accumulé beaucoup de capacités et puisse gérer beaucoup de choses de manière appropriée. L'âge, pourquoi ce phénomène se produit-il ? Explorons :

Tout d'abord, ces nouvelles sont fortement soupçonnées d'attirer l'attention, tout comme les « conductrices ». En fait, le taux d'accidents des conductrices est inférieur à celui des conducteurs masculins. C'est précisément parce qu'elles le sont moins. ce sont des nouvelles et peuvent inciter les gens à parcourir, mais s'il y a trop de nouvelles comme celle-ci, vous formerez une illusion. Par conséquent, le seuil de 35 ans a été dans une certaine mesure exagéré, provoquant un mauvais impact. et certains suivent même la tendance sans raison.

Mais il y a une part de vérité dans le seuil de 35 ans. Cela doit être distingué de manière sélective. Si un développeur a effectué un travail physique simple et répétitif comme CURD (un vrai codeur), alors lorsqu'il atteint 35 ans, il sera différent de quelqu'un qui vient de quitter l'école. Par rapport aux jeunes qui l'ont été dans un ou deux ans, on imagine la compétitivité à 35 ans, il y aura une forte pression sur la scolarité des enfants, la santé des parents, le logement. , etc., obligeant les développeurs à proposer des exigences salariales plus élevées. Il existe également de nombreuses affaires familiales, interactions sociales, etc. Vous ne voulez pas faire d'heures supplémentaires. Habituellement, le salaire accumulé pour les années de service est relativement plus élevé. fais ce que tu fais, qui le patron choisira-t-il ? En même temps, vieillir présente des problèmes de visage. Si votre patron est un jeune homme beaucoup plus jeune que vous, devriez-vous lui obéir ? Il peut parfois être gênant pour les jeunes de gérer quelqu’un de beaucoup plus âgé qu’eux. Sur cette base, on peut voir que l'existence du seuil de 35 ans a une certaine raison.

Le temps n’attend personne, alors comment les développeurs peuvent-ils éviter le seuil des 35 ans et comment doivent-ils planifier leur vie ?

Si vous constatez que vous n'aimez pas vraiment la technologie, alors vous devriez vous transformer le plus tôt possible pendant que vous êtes encore compétitif à votre âge, suivre votre cœur, trouver quelque chose que vous aimez et commencer à accumuler de la compétitivité.

Si vous aimez vraiment la technologie et êtes disposé et prêt à passer votre vie avec elle, alors vous devez accumuler efficacement, continuer à apprendre et toujours veiller à creuser l'écart technique avec les jeunes, qui ont moins de pression et une forte force physique. Des avantages, il faut compenser par des avantages techniques. Le chemin pour devenir un grand maître n'est pas quelque chose que l'on peut choisir, mais un passage obligé. À 35 ans, il faut être un grand maître et occuper des postes systémiques. que les jeunes sont difficiles à réaliser.

Je dois vous rappeler ici qu'avec le développement de la société, le seuil de la technologie augmente progressivement. Par exemple, vous avez peut-être entendu parler d'« ingénieur full stack », mais cela n'appartient qu'aux premiers jours de l'ère Internet. Aujourd'hui, la division sociale du travail est trop fine et trop profonde. Le full-stack n'existe plus. S'il existait, on pourrait l'appeler « tout savoir, mais pas tout », car le fossé entre les énergies des gens ne sera pas trop grand. .Vous choisissez de tout étudier, d'autres choisissent d'étudier un domaine et l'employeur est basé sur Lorsque vous recrutez des personnes pour un poste, vous devez déterminer qui a l'avantage. La raison vous fera choisir d'approfondir un domaine et de comprendre le. les zones environnantes, mais de cette façon, vous deviendrez un composant d'une grande machine, et votre liberté de choix sera restreinte, et le seuil de subdivision sera limité. Les exigences seront très sophistiquées et spécialisées, et vous n'aurez qu'un. goût superficiel. Si vous ne recherchez pas la profondeur, vous serez confronté à l'élimination.

La fabrication de telles pièces de machines ne convient pas aux personnes ayant des aspirations entrepreneuriales, alors à quoi seront-elles confrontées lorsqu'elles démarreront une entreprise ? En regardant le développement de la société chinoise, vous n'aurez peut-être pas la chance de répondre à tous les besoins informatiques courants. Par exemple, les sites Web sont remplacés par des comptes officiels, et les quelques marchés de sites Web sont également occupés par des plateformes SaaS. il suffit de cliquer sur la souris pour initialiser. , vous devez écrire du code, et leurs frais basés sur le temps peuvent être très faibles. Du point de vue du client, la première considération est bien sûr le coût. Les exigences générales incluent également les systèmes de commerce électronique, les systèmes de diffusion en direct, les systèmes de paiement de contenu, etc., et ceux-ci ont tous des solutions existantes très matures, Weimeng, Youzan, Weiqing, Weijianmu, etc. bonnes plateformes SaaS développées. Qu'en est-il des besoins informatiques non généraux ? Des solutions dans de nombreux domaines verticaux se formeront et le sommet de la montagne sera saisi et divisé, comme Meituan, Didi, Tubatu, Dingguagua, etc. Il vous est difficile d'avoir une chance dans leurs domaines, ne laissant que le nombre des développeurs. Il n'y a pas beaucoup de demandes qui nécessitent vraiment une personnalisation. Ce type de demande a une caractéristique. Parce qu'il s'agit de personnalisation, les raisons de coût déterminent que le prix unitaire doit être élevé. entreprise d'entrepreneur. Combien d'employés avez-vous? Quelle est la taille du bureau ? Quelle est la durée de l’accumulation historique ? Combien y a-t-il de cas ? Quel est le montant du capital social ?

De plus, avec le développement de l'informatique aujourd'hui, un même système d'application prendra de nombreuses formes en termes de logiciel. Il nécessite généralement une ou plusieurs applications, petits programmes, pages Web, etc., et implique également plusieurs plateformes. (Les applications incluent Android, IOS et le prochain Hongmeng, des mini-programmes impliquant WeChat, Alipay, Baidu, Douyin, etc. Bien qu'il existe des outils comme UNIAPP, de nombreuses compétences sont encore requises lorsque les clients ont besoin d'applications natives, ce qui conduit à la nécessité de le faire. former une équipe et les membres de l'équipe Cela comprend également le personnel non technique, tel que les vendeurs, les financiers, etc., qui constituent tous certaines barrières à l'entrée. En fin de compte, vous constaterez que démarrer une entreprise nécessite plus que de la technologie, mais aussi. capital.

Cela dit, sentez-vous que le chemin est difficile ? Mais sachez que ce n'est pas seulement le cas dans le domaine informatique, mais aussi dans les endroits où il y a de la concurrence. Aucun succès n'est facile. Seul votre intérêt peut garantir jusqu'où vous pouvez aller, alors suivez votre cœur.

Si vous suivez votre cœur et après mûre réflexion, vous choisissez quand même de faire de la technologie et de devenir un grand maître, alors que devez-vous faire ? Tout d'abord, vous devez vous concentrer sur l'accumulation, notamment en vous tenant sur les épaules de géants et en vous précipitant vers des terrains non aménagés. Vous devez trouver l'écosystème le plus prometteur dans votre niche, le rejoindre et revenir au cadre de développement PHP, Xiaobai en regardant le. framework, il ne fait qu'encapsuler et fournir les fonctions requises, mais l'expert voit que le framework fournit une plateforme de collaboration unifiée. Tout le monde crée sur la même plateforme, afin d'éviter de réinventer la roue, ce qui est suffisant en termes de coût économique. rentable et avec l'aide de la force de chacun, vous pouvez libérer vos mains pour développer votre propre entreprise.

L'unité de la plate-forme de base est très importante. Ce n'est qu'ainsi que les humains pourront accumuler, avancer et réduire les coûts. Cependant, il existe une règle intéressante dans la formation d'une plate-forme unifiée, c'est-à-dire qu'en fin de compte, une seule volonté. être laissé comme plate-forme principale, puis il y en aura un à la deuxième place. Pour former une réserve compétitive, les troisième et quatrième places peuvent être fondamentalement ignorées, et les première et deuxième places seront de taille très différente. De tels exemples, comme des milliers dans l'histoire des systèmes d'exploitation, en fin de compte, Windows et Linux sont laissés. Le nombre d'utilisateurs des deux est très différent. Cela est également vrai pour Android et Apple, Taobao et JD.com, Douyin et. Kuaishou, Meituan et Ele.me, etc. Une fois le modèle formé, il est difficile de le secouer. Par exemple, Microsoft ne peut pas ébranler Android, non pas à cause de la technologie, mais parce que l'effet boule de neige est à l'œuvre. et plus grand, et le perdant deviendra progressivement seul et disparaîtra. Même si le roi fait quelques petites erreurs, il ne pourra pas développer des changements, par exemple, le clavier que nous utilisons maintenant, la disposition des lettres n'est pas la plus raisonnable. Il y a eu des claviers avec une disposition raisonnable dans l'histoire, mais comme tout le monde est habitué au clavier actuel, ils continuent à l'utiliser. Pour devenir le roi, il faut deux points très importants : l'avancée technologique doit être suffisante, et la communauté. l’écologie doit établir un effet boule de neige. Ces deux points se complètent.

Alors qui deviendra cette plateforme de base unifiée dans le domaine du framework PHP ? La principale force de développement d'un projet open source devrait être qu'un grand nombre d'utilisateurs continuent de l'affiner et de le résumer pendant son utilisation, puis de continuer à en discuter et à l'améliorer ensemble, plutôt que quelques personnes s'appuyant sur leur propre réflexion ou expérience, donc si dans ThinkPHP et Symfony Faites un choix, la réponse est très claire. En fait, Symfony a compris très tôt l'importance d'une plate-forme unifiée, elle s'est donc consacrée à la mise en place de composants de base découplés et complets, et a itéré à plusieurs reprises, donc. que certains autres frameworks existants utilisent également des composants Symfony, tels que Laravel et ThinkPHP, Symfony a mis à plusieurs reprises l'accent sur les « standards » et est désormais devenu un standard de facto dans le domaine du développement PHP, car la standardisation est une condition nécessaire pour une plate-forme unifiée.

Quant à Drupal, il s'agit d'une plate-forme standard unifiée de niveau supérieur construite sur la base de Symfony, qui est devenue la base standard du système complet. Presque toutes les fonctions de couche d'application couramment utilisées ici ont été fournies sur cette base. plate-forme unifiée. Basée sur une conception modulaire, créez des fonctions plus tournées vers l'avenir et réalisez l'idéal de Drupal de « fournir d'excellentes expériences numériques ».

Sélection technologique des décideurs :

Si vous êtes un patron entrepreneurial ou un directeur de projet qui effectue la sélection technologique pour un projet, voici quelques éléments à noter pour vous :

Contrôle des coûts :

Cela semble aller de soi, bien sûr, mais avez-vous vraiment le contrôle ? Les logiciels sont intangibles. Si vous n'êtes pas un professionnel, il est difficile de contrôler les coûts. Voici quelques pièges :

Dans le contexte actuel, si vous souhaitez réaliser un projet de planification à long terme et le développer vous-même, ne sous-traitez pas. Certaines choses se ressemblent mais sont en réalité très grandes. Il est difficile pour les non-professionnels de voir la différence entre les deux systèmes en termes de robustesse, d'évolutivité, de sécurité, de durabilité, etc. la même fonction a une charge de 5 000 et une charge de développement de 50 millions. Le coût est complètement différent. Par exemple, la charge de travail de la documentation du logiciel est parfois bien supérieure à celle du développement du logiciel lui-même. La documentation est la clé pour assurer le développement à long terme. du système, mais il est difficile d'obtenir une documentation complète en matière d'externalisation. La qualité de l'externalisation vous fera généralement payer à l'avenir. Après tout, la raison n'est pas parce que l'entreprise d'externalisation n'est pas solide, mais à cause de problèmes de coûts. .

Ayez moins de dette technique :

Ne cherchez pas des développeurs qui n'ont pas assez d'expérience juste pour économiser de l'argent au début. Voici une histoire : Un patron et le directeur technique avaient des différences dans le recrutement des talents, et le. Le directeur technique a demandé Le salaire pour le poste est de 15 000, mais quand un candidat arrive, il ne coûte que 8 000. Le directeur technique n'en veut pas, mais le patron est ravi et pense l'avoir mérité, alors pourquoi devrait-il bêtement payer plus. ? Parfois, les novices laissent d'énormes dangers cachés dans le système.Ce directeur technique a vu le problème de la dette technique.L'équipe de développement doit disposer d'une base technique approfondie pour contrôler le système.En même temps, lors du choix d'un système de base, il ne faut pas choisir. un avec une faible maturité, cela garantit que vous n'avez aucune dette technique autant que possible, sinon vous commencerez à vous habituer à la route et à vous retrouver coincé dans le bourbier plus tard si vous rencontrez une période de fenêtre commerciale critique, même les dieux. ne peut pas vous sauver

Levier pour accélérer :

Développement social jusqu'à aujourd'hui En fait, de nombreuses fonctions du système informatique existent déjà et sont très complètes Vous n'avez pas besoin de les développer vous-même. Par exemple, si je dois choisir. entre ThinkPHP et Drupal, je choisirai Drupal sans hésitation, car ThinkPHP n'est qu'un produit semi-fini et est généralement utilisé dans diverses applications. Certaines fonctions sont nécessaires dans un système d'entreprise, comme le système de récupération de place, le système de statut, la clé-valeur. stockage, système de traitement par lots, système de tâches planifiées, système de saisie de données, système Ajax, moteur de visualisation des données, système de prise en charge des versions, système d'autorisation, etc., ceux-ci ne sont pas disponibles dans ThinkPHP, et Drupal est très complet, et cela prendra des mois pour des années pour les développer sur ThinkPHP. Non seulement on ne peut pas parler des avantages de la plateforme unifiée de base, mais il est également difficile de garantir la qualité du code développé par soi-même. Non seulement c'est en vain C'est un gaspillage de ressources. , et les nouveaux membres devront payer des frais de formation élevés à un stade ultérieur. Pourquoi ne pas utiliser un système prêt à l'emploi et mature avec une base complète ?

Intégrer dans l'environnement :

Le système de développement doit être intégré à l'environnement général. En plus de tirer parti de l'accélération, il dépend également de l'acquisition de talents de réserve pour dissocier les développeurs des projets. Ne soyez pas incapable de trouver suffisamment de développeurs pour les rejoindre rapidement lorsque les développeurs existants partent ou. sont insuffisants. Le projet est intégré dans un environnement plus large et le découplage des développeurs assure dans une large mesure la sécurité du développement du projet.

Recommandations nationales sur l'open source :

Dans cette section, nous nous situons au niveau national et examinons comment nous devrions traiter l'open source. Notre pays se renforce de jour en jour. De nombreux habitants du pays attendent avec impatience. le jour où nous dépasserons les États-Unis. Donc, si la Chine veut dépasser les États-Unis. Pour bloquer et atteindre la transcendance, vous devez participer à l'open source international et devenir le principal contributeur, plutôt que de construire vous-même un système indépendant (les systèmes auto-construits devraient le faire). se produisent sur de nouvelles choses, comme le système d'exploitation de l'Internet des objets de nouvelle génération Hongmeng), car l'open source est l'open source pour toute l'humanité, pas pour un seul pays. Travailler à huis clos et sortir éloignera la Chine du monde. . Vous devez savoir que la Chine ne compte que 1,4 milliard d'habitants, alors qu'il y a plus de 7 milliards d'habitants dans le monde. Les forces écologiques ne peuvent pas rivaliser avec le monde, donc l'approche rationnelle consiste à participer à l'open source et à s'efforcer d'apporter une contribution. est d'hériter des acquis du développement humain et de se développer plus rapidement sur la base des géants. L'autre est de choisir d'être avec la majorité du peuple, d'ouvrir le pays et d'établir une influence.

【Recommandation de tutoriel connexe : thinkphp framework

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer