国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Maison développement back-end tutoriel php 【Yii】剛接觸Yii談一下對Yii框架的看法和感受 (Yii 1.1.x),該怎么解決

【Yii】剛接觸Yii談一下對Yii框架的看法和感受 (Yii 1.1.x),該怎么解決

Jun 13, 2016 am 11:59 AM
action nbsp php yii

【Yii】剛接觸Yii談一下對Yii框架的看法和感受 (Yii 1.1.x)

本帖最后由 default7 于 2014-06-10 00:57:13 編輯 之所以想到去弄Yii,因?yàn)榭吹胶芏嗾衅窹HP都要求必須精通Yii框架。
首先的印象這個(gè)框架是中國人創(chuàng)始的,但是卻全都是英文的為主。這幾天看了一下Yii權(quán)威指南。
說一下自己的初步感受(Yii?1.x):




1)文件結(jié)構(gòu)凌亂。
既然是框架,卻可以將action獨(dú)立出來/protected/controllers/post/CreateAction.php。這樣極容易讓action與controller混亂。




2)對視圖的控制欲太強(qiáng)烈,模板使用的是純PHP。難道你做程序員也非得去寫前端?
一個(gè)網(wǎng)站項(xiàng)目,讓美工切出了HTML?DIV?CSS模板之后,又讓PHP程序員再把里面的HTML標(biāo)簽換成PHP標(biāo)簽再搞一趟?
Yii的CHtml讓很多人特別贊不絕口,但是他們似乎忽略了一個(gè)最核心的關(guān)鍵,網(wǎng)站網(wǎng)頁有功能沒賣相根本就會(huì)很慘,你不要指望訪客都會(huì)像程序員那種只喜歡方方框框沒有一張圖全都是表格一樣、對得工工整整的頁面。


要注意:網(wǎng)站網(wǎng)頁他不像軟件,軟件可能幾年十幾年都是做的功能改進(jìn),但網(wǎng)頁,訪客喜歡新鮮感,界面視覺,所以需要不斷的改界面,改UI。

是定期修改,三天一小改,一個(gè)月一大改,三個(gè)月重新改。界面需要經(jīng)常改。這樣的情況下,如果直接使用html原型來做模板,美工做好DIV之后就可以直接用,根本都不需要程序插手??墒侨绻昧薈Html這樣高度耦合的視圖(模板)寫法,那么必須得多出一道工序,那就是還需要一個(gè)懂得Yii的程序員將美工已經(jīng)做好的DIV?HTML再轉(zhuǎn)成Yii視圖模板中的標(biāo)簽,這樣不是浪費(fèi)嗎?人力、時(shí)間、財(cái)力。與PHP的高效快速?背道而行?
實(shí)際上Yii的官網(wǎng)也是極其簡陋的,蘋果為什么會(huì)成功,賣相是關(guān)鍵,現(xiàn)在這個(gè)時(shí)代,UI界面真的太重要了。





3)感覺各個(gè)之間耦合度太高了,猶如一門新的語言。
Yii入門門檻比其他的框架高很多。各個(gè)之間都是高度耦合,都是些配置一樣的設(shè)置,越是耦合越緊密,配置文件越是分散各個(gè)角落其實(shí)維護(hù)起來成本更高、時(shí)間更長、維護(hù)效率更低(當(dāng)然,他可能運(yùn)行效率很快)。



Yii對我的吸引:
1)51job、智聯(lián)招聘上很多招PHP程序員的都要求需要精通Yii(其實(shí)看到那些要求我覺得很奇怪,描述上又要能夠獨(dú)立完成一整個(gè)項(xiàng)目又要精通Yii又要端精通DIV?CSS?UI,想讓別人一個(gè)人搞,有點(diǎn)不合實(shí)際,Yii適合大型項(xiàng)目,如果一個(gè)大型項(xiàng)目中又要讓程序員干Yii又要讓他去寫DIV這樣不可笑嗎?)

2)網(wǎng)上很多次方充滿著對Yii的贊美、推薦,比如知乎上、搜索引擎中搜索MVC框架排名看到各大轉(zhuǎn)載的文章、PHP?MVC框架排名上,Yii都排名得很前,且很多神贊。



以上是我對Yii初步接觸的一些感受,寫出來希望能夠一起探討,目的是能夠更快的掌握、領(lǐng)悟。by?default7#zbphp.com







------解決方案--------------------
歡迎了解?Yii2.0,你說的絕大多數(shù)問題在Yii?2.0?時(shí)代都有更好的實(shí)現(xiàn)了。
至于用PHP做模版,這個(gè)屬于仁者見仁智者見智的問題。學(xué)會(huì)模版引擎跟學(xué)會(huì)PHP差不了多少。2.0原生支持smarty和twig
至于耦合度的問題,只要你想,解耦根本不是問題,Yii提供的是一站式解決方案,一個(gè)字,就是快,之后你想替換組件,改模版,加緩存,隨你便。2.0原生支持多種解耦,比如DI。
至于像新語言的問題,因?yàn)閅ii大量使用了DSL的模式。這個(gè)模式是微軟發(fā)明的。為什么用,因?yàn)楹糜谩?br>至于混亂的問題,你沒有學(xué)到ActiveRecord,沒用用到ActiveForm。這些東西的彼此搭配才是現(xiàn)代PHP框架的核心啊。這些特色的點(diǎn)你都沒有說到,用好了效率灰?;页8?。Yii2.0新增了全新的查詢與表現(xiàn)分離的ActiveQuery以及更吊的多關(guān)系查詢,有空了解下。
除此之外的功能還有安全性設(shè)計(jì),GII代碼生成器,開發(fā)者工具條,調(diào)試模式,Codeception調(diào)試器,F(xiàn)ixture數(shù)據(jù)定制器,Bootstrap擴(kuò)展等等等等不勝枚舉的特性,學(xué)習(xí)曲線本身不是問題,這些特性你不用也沒關(guān)系,當(dāng)原生PHP一樣用也好用,但是學(xué)習(xí)曲線是和收益成正比的,用過你就放不下了。
功夫要下到,你不會(huì)不代表它不能,這么多企業(yè)用Yii,難道他們的CTO傻?
------解決方案--------------------
你這是只看到y(tǒng)ii的缺點(diǎn),沒看到y(tǒng)ii2的優(yōu)點(diǎn)。任何框架都會(huì)有缺點(diǎn)。
1、yii最主要的精華是OOP。
???????這個(gè)是yii框架的整個(gè)功能的所在,也是是公司招聘的主要原因
2、就像樓上所說的yii提供了各種便捷的功能,所以開發(fā)速度快。
3、文件結(jié)構(gòu)凌亂
???????這個(gè)完全是按照個(gè)人習(xí)慣來組織,你可以這樣寫
protected
??????????actions
?????????????????post
?????????????????????????CreateAction.php
??????????????????????????ReadAction.php
???????????controllers
??????????????????PostController.php
4、至于表單問題
???????這個(gè)要看個(gè)人需要,如果做的表單頁面是中規(guī)中矩的,可以使用ActiveForm。
???????當(dāng)然,你可以完全不用ActiveForm,自己寫html來實(shí)現(xiàn),ActiveForm只是給你提供了一種方便。
?????????????????????????
------解決方案--------------------
沒用過?Yii,也沒打算用。表示沒有就業(yè)壓力
據(jù)說?Yii2.0?這能工作于?php?5.4?及以上了
所以模板中的?
樓主對?Yii?模板的批評,也就是對?Smarty?的批評,也就是對所有使用模板引擎將業(yè)務(wù)邏輯與視圖分離的框架的批評,也就是對?MVC?這種設(shè)計(jì)模式的批評
姑且言之,姑妄聽之

如果要在模板中引入控制流,那么與其象?Smarty?自創(chuàng)一套模板語言,還真不如象?Yii?這樣直接使用?php?代碼
至少是學(xué)習(xí)難度下降了,何況學(xué)會(huì)了?php?,吃飯也總算有著落了

我倒是期望有這樣一個(gè)框架:他能將在?html?聲明為客戶端運(yùn)行的php代碼翻譯成?js?代碼。從而免去學(xué)?php?還要學(xué)習(xí)?js?的煩惱
------解決方案--------------------


個(gè)人認(rèn)為說的沒任何道理,你說的幾點(diǎn)只是框架提供的一個(gè)功能而已

1)文件結(jié)構(gòu)凌亂:框架有強(qiáng)制你把a(bǔ)ction單獨(dú)寫出來么?完全可以寫到?Controller
2)對視圖的控制欲太強(qiáng)烈:和第一條一樣,沒人強(qiáng)制你用上這個(gè)功能,我自己做表單看情況是否啟用ActiveForm,哪個(gè)方便用哪個(gè)

事實(shí)證明,正規(guī)的公司都是分工明確不會(huì)讓美工去干前端人員切片的活,甚至讓美工或前端去套程序,只有那些比較坑的網(wǎng)建公司、非正規(guī)公司才會(huì)這樣去做,出一個(gè)人的薪水干幾個(gè)工種的工作


框架只是一個(gè)提升工作效率的工具,看你怎么去用,不是讓你把所有內(nèi)置功能全部用上,不要被框架框?。?br>


------解決方案--------------------
至于Chtml做表單ActiveForm,可用可不用。但是個(gè)人覺得yii最優(yōu)秀的莫過于OOP和MVC,還有它的靈魂:隨用隨取,而并不是運(yùn)行就把所有的類加載進(jìn)來,這也是其效率所在了!也是很多企業(yè)要求YII的原因了。
------解決方案--------------------
用Yii完成了2個(gè)項(xiàng)目了,正在做第三個(gè),這次這個(gè)項(xiàng)目相對比較大,功能也較多。
前兩個(gè)項(xiàng)目一次和別人合作,一次完全自己做的,自己做的一次是做一個(gè)票務(wù)系統(tǒng),因?yàn)檎w界面要求不高,我就沒有找前端,全部自己寫了。
現(xiàn)在感覺Yii的整體設(shè)計(jì)用起來真是舒服,本身基于組件的框架使其具有極高的定制性,就像樓上所說的,有很多功能你覺得不好納尼完全可以不用,有很多替代方案,Yii只是給你多了一個(gè)選擇,如果你覺得好像沒什么替代方案只能說明對框架不夠熟悉,個(gè)人感覺Yii還是值得鉆研一下的
------解決方案--------------------
yii對初學(xué)者來說確實(shí)有點(diǎn)復(fù)雜,不過用時(shí)間久了就能體會(huì)到好處了,它確實(shí)是個(gè)極優(yōu)秀的框架。剛開始可能感覺不出來,等到后期維護(hù)的時(shí)候就能發(fā)覺,它真的是很方便,非常靈活,想怎么改就怎么改,哪怕需求變了,用它也可以快速完成。當(dāng)然,前提是你得保證設(shè)計(jì)應(yīng)該合理
------解決方案--------------------
1)文件結(jié)構(gòu)凌亂。
既然是框架,卻可以將action獨(dú)立出來/protected/controllers/post/CreateAction.php。這樣極容易讓action與controller混亂。
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

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1502
276
PHP appelle AI Intelligent Voice Assistant Assistant PHP Interaction System Construction PHP appelle AI Intelligent Voice Assistant Assistant PHP Interaction System Construction Jul 25, 2025 pm 08:45 PM

L'entrée vocale de l'utilisateur est capturée et envoyée au backend PHP via l'API MediaRecorder du JavaScript frontal; 2. PHP enregistre l'audio en tant que fichier temporaire et appelle STTAPI (tel que Google ou Baidu Voice Recognition) pour le convertir en texte; 3. PHP envoie le texte à un service d'IA (comme Openaigpt) pour obtenir une réponse intelligente; 4. PHP appelle ensuite TTSAPI (comme Baidu ou Google Voice Synthesis) pour convertir la réponse en fichier vocal; 5. PHP diffuse le fichier vocal vers l'avant pour jouer, terminant l'interaction. L'ensemble du processus est dominé par PHP pour assurer une connexion transparente entre toutes les liens.

Comment utiliser PHP pour créer des fonctions de partage social PHP Partage d'interface Pratique Comment utiliser PHP pour créer des fonctions de partage social PHP Partage d'interface Pratique Jul 25, 2025 pm 08:51 PM

La méthode principale de création de fonctions de partage social dans PHP est de générer dynamiquement des liens de partage qui répondent aux exigences de chaque plate-forme. 1. Obtenez d'abord la page actuelle ou les informations d'URL et d'article spécifiées; 2. Utilisez UrLencode pour coder les paramètres; 3. épisser et générer des liens de partage en fonction des protocoles de chaque plate-forme; 4. Afficher les liens sur l'avant pour que les utilisateurs puissent cliquer et partager; 5. Générez dynamiquement des balises OG sur la page pour optimiser l'affichage du contenu du partage; 6. Assurez-vous d'échapper à la saisie des utilisateurs pour empêcher les attaques XSS. Cette méthode ne nécessite pas d'authentification complexe, a de faibles co?ts de maintenance et convient à la plupart des besoins de partage de contenu.

Comment utiliser PHP combiné avec l'IA pour obtenir la correction de texte de la syntaxe PHP détection et l'optimisation Comment utiliser PHP combiné avec l'IA pour obtenir la correction de texte de la syntaxe PHP détection et l'optimisation Jul 25, 2025 pm 08:57 PM

Pour réaliser la correction d'erreur de texte et l'optimisation de la syntaxe avec l'IA, vous devez suivre les étapes suivantes: 1. Sélectionnez un modèle ou une API d'IA appropriée, tels que Baidu, Tencent API ou bibliothèque NLP open source; 2. Appelez l'API via Curl ou Guzzle de PHP et traitez les résultats de retour; 3. Afficher les informations de correction d'erreur dans l'application et permettre aux utilisateurs de choisir d'adopter l'adoption; 4. Utilisez PHP-L et PHP_CODESNIFFER pour la détection de syntaxe et l'optimisation du code; 5. Collectez en continu les commentaires et mettez à jour le modèle ou les règles pour améliorer l'effet. Lorsque vous choisissez AIAPI, concentrez-vous sur l'évaluation de la précision, de la vitesse de réponse, du prix et du support pour PHP. L'optimisation du code doit suivre les spécifications du PSR, utiliser le cache raisonnablement, éviter les requêtes circulaires, revoir le code régulièrement et utiliser x

Au-delà de la pile de lampe: le r?le de PHP dans l'architecture d'entreprise moderne Au-delà de la pile de lampe: le r?le de PHP dans l'architecture d'entreprise moderne Jul 27, 2025 am 04:31 AM

PhpisstillRelevantinmodernerterpriseenvironments.1.modernPhp (7.xand8.x) offre des performances, des stricts, un jitcompilation, et modernsyntax, rendant la main

Tigne de performance de cartographie relationnelle d'objet (ORM) dans PHP Tigne de performance de cartographie relationnelle d'objet (ORM) dans PHP Jul 29, 2025 am 05:00 AM

évitez N 1 Problèmes de requête, réduisez le nombre de requêtes de base de données en chargeant à l'avance des données associées; 2. Sélectionnez uniquement les champs requis pour éviter de charger des entités complètes pour enregistrer la mémoire et la bande passante; 3. Utilisez raisonnablement les stratégies de cache, telles que le cache secondaire de la doctrine ou les résultats de requête à haute fréquence de cache de Doctrine; 4. Optimisez le cycle de vie de l'entité et appelez régulièrement () pour libérer la mémoire pour empêcher le débordement de la mémoire; 5. Assurez-vous que l'indice de base de données existe et analysez les instructions SQL générées pour éviter les requêtes inefficaces; 6. Désactiver le suivi automatique des changements dans les scénarios où les modifications ne sont pas nécessaires et utilisez des tableaux ou des modes légers pour améliorer les performances. L'utilisation correcte de l'ORM nécessite de combiner la surveillance SQL, la mise en cache, le traitement par lots et l'optimisation appropriée pour garantir les performances de l'application tout en maintenant l'efficacité du développement.

Construire des microservices résilients avec PHP et Rabbitmq Construire des microservices résilients avec PHP et Rabbitmq Jul 27, 2025 am 04:32 AM

Pour construire un microservice PHP flexible, vous devez utiliser RabbitMQ pour obtenir une communication asynchrone, 1. Découplez le service via des files d'attente de messages pour éviter les défaillances en cascade; 2. Configurer des files d'attente persistantes, des messages persistants, une confirmation de libération et un ACK manuel pour assurer la fiabilité; 3. Utilisez des échecs de traitement de la sécurité de la file d'attente de la file d'attente de la file d'attente de la file d'attente de la file d'attente de la file d'attente de la file d'attente de la file d'attente de la file d'attente; 4. Utilisez des outils tels que SuperVisord pour protéger les processus de consommation et permettre des mécanismes de battements cardiaques pour assurer la santé des services; et finalement réaliser la capacité du système à opérer en continu en échecs.

Exemple de commande de Shell Run Shell Exemple de commande de Shell Run Shell Jul 26, 2025 am 07:50 AM

Utilisez Sub-Process.run () pour exécuter en toute sécurité les commandes de shell et la sortie de capture. Il est recommandé de transmettre des paramètres dans les listes pour éviter les risques d'injection; 2. Lorsque les caractéristiques du shell sont nécessaires, vous pouvez définir Shell = True, mais méfiez-vous de l'injection de commande; 3. Utilisez un sous-processus.popen pour réaliser le traitement de sortie en temps réel; 4. SET CHECK = TRUE pour lancer des exceptions lorsque la commande échoue; 5. Vous pouvez appeler directement des cha?nes pour obtenir la sortie dans un scénario simple; Vous devez donner la priorité à Sub-Process.run () dans la vie quotidienne pour éviter d'utiliser OS.System () ou les modules obsolètes. Les méthodes ci-dessus remplacent l'utilisation du noyau de l'exécution des commandes shell dans Python.

Création d'environnements Docker prêts pour la production pour PHP Création d'environnements Docker prêts pour la production pour PHP Jul 27, 2025 am 04:32 AM

L'utilisation de l'image de base PHP correcte et la configuration d'un environnement Docker sécurisé et optimisé sont la clé pour obtenir la production prête. 1. Sélectionnez PHP: 8.3-FPM-Alpine comme image de base pour réduire la surface d'attaque et améliorer les performances; 2. Désactiver les fonctions dangereuses via PHP.ini personnalisé, désactiver l'affichage des erreurs et activer Opcache et Jit pour améliorer la sécurité et les performances; 3. Utilisez Nginx comme proxy inverse pour restreindre l'accès aux fichiers sensibles et transférer correctement les demandes PHP à PHP-FPM; 4. Utilisez des images d'optimisation en plusieurs étapes pour supprimer les dépendances de développement et configurez les utilisateurs non racinaires pour exécuter des conteneurs; 5. Supervisord facultatif pour gérer plusieurs processus tels que Cron; 6. Vérifiez qu'aucune fuite d'informations sensibles avant le déploiement

See all articles