如何看待大公司将PHP作为前端语言?
同学去腾讯写PHP,但是实际上是在做一些前端的工作。
PHP发展到现在,也有了面向对象的概念,也出现了laravel这样的框架,有了完整的mvc模式,为什么依然会被认为是前端语言?和Java相比只是效率和可靠程度的差异吗?
回复内容:
一开始邀请我回答这个问题的时候,我是拒绝的。一方面,PHP在一个业务系统里如何定位,要看你这个系统的实际情况,目前我这后端还是JS呢。对于网络游戏来说,C加加还是前端呢。
另一方面,前后端的定义,发展到现在已经很不一样了。从前在网线两头分开前后端的做法已经不适合了。现在我们更倾向把路由处理、request/response 这些都算作前端,有点类似JAVA里面的action。从service开始,到DAO,就可以算是概念上的后端了。
那么问题来了,PHP到底算什么呢?
那就是看你用PHP来做什么了。
谢谢看到这,其实上面的都不是我想说的。
DUANG!
其实吧,一个有点规模的业务系统,会逐渐拆分为一个个逻辑单子化的小系统,这些子系统各自分担一些事情,有些是PHP,有些是JAVA,有些是C,Python,多和谐多美丽。有的在招呼客人,有的在端菜,有的在后厨。噗~
最后,PHP是世界上最好的语言,第二是JS,第三不知道,第四阿森纳。 PHP也分为面向前端的PHP和面向后端的PHP。
举个不太正确但很形象的例子:现在大多应用都是前后端分离,业务逻辑与数据存储的分离。面向前端的PHP要做的就是是前后端的分离,面向后端的PHP要做的就是业务逻辑和数据数据存储部分。
面向前端的PHPer除了需要熟练掌握PHP基础语法,类库,框架和对数据库的基本操作,还需要需要熟悉DIV+CSS,熟悉JS。只有熟悉了前端的开发,才能更好的进行模板的渲染,更好的做到前后的分离,以及分离后前后端数据的交互。
反过来,前端程序员最好要懂一点后端,才能更好的进行前端开发。前端做的不仅仅是一个界面,还有对页面所收集的数据的初步处理。比如表单中的用户输入,至少需要格式处理然后才post或get给后端。再举个极端的例子,如果前端程序员完全不懂后端,甚至连中的name属性有什么用的都不清楚的话,那怎么能很好的做到前后端数据分离呢?
面向后端的PHPer则肯定得掌握环境的搭建,linux的基本使用,简单shell的编写,扩展的编写,并熟悉数据库,对数据库的设计和优化也是必须的。更深入就是对php源码和mysql源码的研究。
在实际运用中,一方面,一个网站UI的变动是相当频繁的,如果是基于传统的java开发方案,jsp tag lib,freemaker, velocity,这很难让前端去修改去调试。另一方面,由于和java相比,PHP在执行效率和性能上基本处于弱势。所以很多大型网站后台都不使单独用PHP来处理业务,而是采用PHP+JAVA的架构。特别是对于有复杂的用户交互及高并发及后端还有复杂的业务的网站来说,如电商类网站,前端使用PHP,可以做到快速开发,部署不用重启,同时nginx + fastcgi + php的组合也能应对基本的高并发问题。后端的复杂业务处理(如订单处理,购物车,库存相关的)使用java来做则再合适不过了。于是,面向后端的PHP的任务,在很多大型网站中基本就交给java去做了。
所以这么来看,一些大的公司里面,PHPer去做前端的任务,一方面是公司网站架构就是前端使用PHP,对于一些“前端工程师”做的事情,让PHPer来做,那也是很正常的;另一方面,可能是PHPer功力还不够深厚,做不了面向后端的PHP。 首先,部分赞同@蒋航 的回答。
其次,更清晰地讲 ——
完全的前后端分离 其实不用 PHP 参与前端,只需它提供基于 HTTP 或 Web Socket 的数据接口即可 —— 前端自主控制 用户级的业务逻辑,加载 HTML、CSS、JS、字体、图片等静态资源后,与后端只有数据交换(JSON、XML 或自定义数据结构)。这是 SPA(单页应用)常用的模式,借鉴 原生网络客户端的架构。
现在大型网站如有 PHP 重新参与前端事务,主要因为性能考量 —— 减少网络连接数的同时,保障内容很多的网页在浏览器中的渲染效率~ 他们通常用后端语言生成 包含网页首屏内容的 HTML 代码、非首屏内容的 HTML 片段,首屏的渲染基本无异于传统 Web,后续内容会以纯文本的形式缓存在隐藏 DOM 中按需加载~
Facebook 的 Big Pipe 和 阿里的 Big Render 是上述架构思想的较好实践,但后者的后端语言是 Java。据我们社团部长在腾讯服务端部门的实习反馈,鹅厂的 PHP 用在各地镜像服务器与前端程序直接交互,而核心的业务逻辑、数据持久化则用 C++ 自主开发了 Hammer 架构来支持。
所以,除了不同后端语言/技术各自特点会左右一家公司最初的选择 —— 用怎样的前后端架构并不注定由 PHP 去和前端配合完成,J2EE、M$.Net、Node.JS、Google Go 都可以去做配合前端的事~
——————————————————————
个人赞同“前后端工程师都要了解对方的技术原理”,但不喜欢 PHPer 被夹在中间 —— 既不会掌控后端架构,又搞不出真正的前端工程,在哪端都是写比较一次性的“业务代码”……
前几天面试了一个应聘“前端工程师”的应届生,他在之前实习、转正的公司“用 JSP 写前端页面”,其职位名曰“前端开发工程师”,但是 —— 他说最近一个自己包办的私人 PHP 网站项目 最有收获的一点是“搞清了跨域问题”,可问了几句才发现他混淆了“iframe 跨页与跨域”,因为他都不能准确描述 域名与跨域的定义……
我在此不是讽刺别的程序猿,而是觉得中国计算机教育让很多程序猿一直在一些误区中工作着,让自己和用户都蛋疼着……
所以我的建议是 —— 保持对各种技术领域的好奇与了解,并在一定时期内专注于一个喜欢的领域~ 一切都只是”增删改查“
何必纠结
欢迎关注我的 initphp 让你的代码更简单.... 如果java 和php 两个语言混合开发 java是要负责数据,业务逻辑方面 PHP要做的应该是数据的调用,在这里应该是这个前端, PHP算前端,那HTML不是哭晕在厕所? 另外,一般是把PHP与JSP的概念搞混了。 只要挣工资,C++也可以写前端。。 PHP貌似没有人拿来在浏览器中运行吧。 因为PHP是最好的语言。
补充PHP是做前端语言的么?我的理解前端是HTML+CSS+Javascript对网页的渲染呀。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

VS Code라고도 알려진 Visual Studio Code는 모든 주요 운영 체제에서 사용할 수 있는 무료 소스 코드 편집기 또는 통합 개발 환경(IDE)입니다. 다양한 프로그래밍 언어에 대한 대규모 확장 모음을 통해 VS Code는

이 튜토리얼은 PHP를 사용하여 XML 문서를 효율적으로 처리하는 방법을 보여줍니다. XML (Extensible Markup Language)은 인간의 가독성과 기계 구문 분석을 위해 설계된 다목적 텍스트 기반 마크 업 언어입니다. 일반적으로 데이터 저장 AN에 사용됩니다

문자열은 문자, 숫자 및 기호를 포함하여 일련의 문자입니다. 이 튜토리얼은 다른 방법을 사용하여 PHP의 주어진 문자열의 모음 수를 계산하는 방법을 배웁니다. 영어의 모음은 A, E, I, O, U이며 대문자 또는 소문자 일 수 있습니다. 모음이란 무엇입니까? 모음은 특정 발음을 나타내는 알파벳 문자입니다. 대문자와 소문자를 포함하여 영어에는 5 개의 모음이 있습니다. a, e, i, o, u 예 1 입력 : String = "Tutorialspoint" 출력 : 6 설명하다 문자열의 "Tutorialspoint"의 모음은 u, o, i, a, o, i입니다. 총 6 개의 위안이 있습니다

Java 8은 스트림 API를 소개하여 데이터 컬렉션을 처리하는 강력하고 표현적인 방법을 제공합니다. 그러나 스트림을 사용할 때 일반적인 질문은 다음과 같은 것입니다. 기존 루프는 조기 중단 또는 반환을 허용하지만 스트림의 Foreach 메소드는이 방법을 직접 지원하지 않습니다. 이 기사는 이유를 설명하고 스트림 처리 시스템에서 조기 종료를 구현하기위한 대체 방법을 탐색합니다. 추가 읽기 : Java Stream API 개선 스트림 foreach를 이해하십시오 Foreach 메소드는 스트림의 각 요소에서 하나의 작업을 수행하는 터미널 작동입니다. 디자인 의도입니다

캡슐은 3 차원 기하학적 그림이며, 양쪽 끝에 실린더와 반구로 구성됩니다. 캡슐의 부피는 실린더의 부피와 양쪽 끝에 반구의 부피를 첨가하여 계산할 수 있습니다. 이 튜토리얼은 다른 방법을 사용하여 Java에서 주어진 캡슐의 부피를 계산하는 방법에 대해 논의합니다. 캡슐 볼륨 공식 캡슐 볼륨에 대한 공식은 다음과 같습니다. 캡슐 부피 = 원통형 볼륨 2 반구 볼륨 안에, R : 반구의 반경. H : 실린더의 높이 (반구 제외). 예 1 입력하다 반경 = 5 단위 높이 = 10 단위 산출 볼륨 = 1570.8 입방 단위 설명하다 공식을 사용하여 볼륨 계산 : 부피 = π × r2 × h (4

Spring Boot는 강력하고 확장 가능하며 생산 가능한 Java 응용 프로그램의 생성을 단순화하여 Java 개발에 혁명을 일으킨다. Spring Ecosystem에 내재 된 "구성에 대한 협약"접근 방식은 수동 설정, Allo를 최소화합니다.

CMS는 콘텐츠 관리 시스템을 의미합니다. 사용자가 고급 기술 지식 없이도 디지털 콘텐츠를 생성, 관리 및 수정할 수 있는 소프트웨어 애플리케이션 또는 플랫폼입니다. CMS를 사용하면 사용자가 콘텐츠를 쉽게 생성하고 구성할 수 있습니다.
