怎么进入php编写,php可以作为前端开发语言吗?
PHP一直就是后端语言 ,最早的时候 web2.0之前 PHP 主要用途就是用来做后端,但是做后端就会遇到个问题 你不可能所有的HTML JS CSS 都用echo 的输出。所以大量的PHP和HTML 混写。这导致后来维护很不方便。也是这原因 在08年前后 诞生了 N多的 模板引擎。这些都是可以用一种简单方式来替代PHP和HTML 混写 那时候还是PHP4 是主流。在那个时代 包括smarty 用途都很广泛 那会学PHP 必学一个脚本引擎 貌似那会框架还很少 。
随着PHP5的诞生和发展 这种写法逐步落后了~ PHP 很多简单的写法 远比这些引擎更高效 而且还不用额外的学习类库 。所以 PHP 也开始担当了前端开发的责任 。
其实在许多大型项目里 JAVA主要写后端逻辑 , JAVA作为一个工业语言 生手和熟手差距都不是很大 。而且最主要是JAVA程序员很多 。后期维护也简单。只要架构的合理 分好模块 开发起来很高效。尤其适合哪种模块超级多的项目。而php 主要用于前端和JS的信息交换 这样效率很快 。 早起的淘宝其实也是这样的 至于现在是否放弃PHP不得而知。
在PHP中如何正确创建函数?
tep 1 =>
php的扩展模块都放在 ext/ 目录下,比如说 snmp模块、mysql模块。 我们要建立自己的模块,就要在ext目录下为自己的模块建一个目录。比如,我们要做一个分析config文件的模块,命名为pconfig模块(parse config的简写),需在ext下建立目录pconfig。将我写好的7个文件copy到该目录下,另外需对主目录下的configure和internal_functions.c作一些修改。
Step 2 =>
Makefile.am Makefile.in
是模板文件,用户执行configure时,会调用这两个文件,生成编译时所用的Makefile文件。修改时将小写的pconfig换成你自己的模块名,别忘了把大写的PCONFIG也替换掉(不要告诉我你不会vi的替换语句)。config.m4也是执行configure将会调用的检测脚本程序,以后我们来讨论这些脚本程序的更深入的修改。现在你只需要把pconfig该成你的模块就可以了。对config.h.stub和setup.stub也如法炮制。其实setup.stub也没什么用。
Step 3 =>
php3-pconfig.h 头文件中
extern php3_module_entry pconfig_module_entry;
#define pconfig_module_ptr &pconfig_module_entry
#define phpext_pconfig_ptr pconfig_module_ptr
这几行定义了模块的入口,将入口注册到php后,php会通过模块入口找到你写的函数
下面几个函数定义是用宏进行定义的,展开以后其实就是 php3_minit_pconfig , php3_rinit_pconfig ……分别在你的模块初试化或结束时被调用,如果你的模块很简单,也就不需要这些定义了
extern PHP_MINIT_FUNCTION(pconfig);
extern PHP_RINIT_FUNCTION(pconfig);
extern PHP_MSHUTDOWN_FUNCTION(pconfig);
PHP_MINFO_FUNCTION(pconfig);
这是你的函数声明,将来写在php脚本语句中的函数名就是在PHP_FUNCTION中定义的名字。
PHP_FUNCTION(pconfig_test);
如果有多个,还可以继续往下加
PHP_FUNCTION(pconfig_parsefile);
PHP_FUNCTION(pconfig_release); …….
Step 4 =>
接下来我们看最重点的C代码了
function_entry pconfig_functions[] = {
PHP_FE(pconfig_test, NULL)
{NULL, NULL, NULL}
};
定义的是你的函数的入口(前面我们提到过模块的入口),按照格式将你在头文件中定义的函数写进去吧。注意,这是用宏定义的,不要管语法是否正确。以后我们具体讨论这些宏的用法。
php3_module_entry pconfig_module_entry = {
"pconfig", pconfig_functions, PHP_MINIT(pconfig), PHP_MSHUTDOWN(pconfig), PHP_RINIT(pconfig), NULL, PHP_MINFO(pconfig), STANDARD_MODULE_PROPERTIES
};
注册模块的入口信息,比如模块名,函数接口,初试化模块将调用的函数等等,如果你的模块不执行复杂操作的话,可以忽略掉他们,写成
php3_module_entry pconfig_module_entry = {
"pconfig", pconfig_functions, NULL,NULL,NULL,NULL,NULL,STANDARD_MODULE_PROPERTIES
};
Step 5 =>
写你自己的函数
在头文件和function_entry处,我们已经定义了自己的函数pconfig_test,现在我们就来实现pconfig_test的功能。就比如执行两个数相加的和吧。
static void _php3_pconfig_test(INTERNAL_FUNCTION_PARAMETERS)
{ ......
}
PHP_FUNCTION(pconfig_test)
{
_php3_pconfig_test(INTERNAL_FUNCTION_PARAM_PASSTHRU);
}
当系统调用pconfig_test时,会调用你的_php3_pconfig_test函数,当然你也可以把_php3_pconfig_test里的内容直接写在PHP_FUNCTION(pconfig_test)中,这样做只是程序结构比较清晰。注意:不要将_php3_pconfig_test命名成php3_pconfig_test,PHP_FUNCTION(pconfig_test)宏展开后实际上就是php3_pconfig_test!
Step 6 =>
好了,现在我们开始修改configure,在echo $ac_n "checking for MySQL support""... $ac_c" 1>&6的前面(当然,如果你熟悉configure的话,可以加在任何合适的地方)加上下面几句话
if test "${with_pconfig+set}" = set; then
withval="$with_pconfig"
# Add your lib in here
EXTRA_LIBS="$EXTRA_LIBS"
# Add your include path in here
INCLUDES="$INCLUDES"
EXT_SUBDIRS="$EXT_SUBDIRS pconfig"
EXT_LIBS="$EXT_LIBS pconfig/libphpext_pconfig.a"
EXTINFO_DEPS="$EXTINFO_DEPS ../ext/pconfig/extinfo.c.stub"
EXT_STATIC="$EXT_STATIC pconfig"
fi
修改internal_functions.c,在头文件定义中加入#include "ext/pconfig/php3_pconfig.h"
在zend_module_entry数组中加入phpext_pconfig_ptr,
Step 7 =>
从新configure,带上需要的参数,不要忘记的是在参数里加入 --with-pconfig
Step 8 =>
index.php3
<? echo pconfig_test(123,678)."
"; ?>
执行%>php index.php3
如何成为优秀的PHP全栈开发师?
首先要给提问者泼一盆凉水,全栈有风险,选择需谨慎。
全栈最怕的就是都会一点,再深入一下就啥也不会,不能把全干理解全栈然后自嗨!
现代社会是一个越来越分工明确的社会,每个人的时间精力是有限的不是特别有天赋自信可以驾驭,选择一个点突破人生成就的上限可能会更高。
下面是我个人主观总结的全栈成长轨迹?
我提取提问里面的3个关键词 优秀 PHP 全栈
提到了PHP应该问的是WEB全栈。全栈的定义需要独立负责整个产品的业务架构、技术架构,完成从产品的idea到上线全流程生命周期中的各个环节,需要在产品、设计、开发、运维等多种角色间切换。
我把全栈分为4个阶段,初级全栈、中级全栈、高级全栈、行业专家。成长到第四阶段最少需要10年。
初级全栈(1-3 年)
理解需求,懂得交互的基本原则;
熟悉现代前端开发流程掌握HTML5;CSS3 LESS SAAS;es6,vue、react等mvvm框架;
熟练掌握PHP语言基础,熟悉各种框架;
熟练掌握SQL,NOSQL;
熟悉服务的发布;
中级全栈(3-5 年)
这个阶段需要的是对内功的修炼。
在前端方面熟练并对js有自己的深刻理解,理解mvvm框架原理,理解webpack等现代前端工具原理。
在后端方面需要数据持久层有深刻的理解和实践经验,熟练掌握Redis等缓存数据库的各种数据结构和使用场景,熟练掌握MySQL等数据库的基本运维和SQL优化。深刻理解PHP各种框架的原理。熟悉各种中间件的使用和基本运维。理解分布式应用,熟悉基本的网络通讯协议。
高级全栈(5-10年)
这个阶段的成长单就技术而言需要更加深入到底层原理才能驾驭百万用户级别以上服务。
前端方面需要具有更扎实的基本功深入到各个平台UI渲染的原理中才能解决类似提高渲染速度和流畅度这样的需求,总结一下就是这个阶段的前端已经不是业务交互代码的搬运工,需要在多端,快跨平台,载入速度,响应性能,兼容性方面有自己的见解,能leader团队为业务提供当下最佳的大前端整体解决方案。
后端方面就更加需要有扎实的数据结构和算法,操作系统,网络通讯的基本功。
熟悉CAP理论,在系统的高可用,高性能,可扩展上有一定的理解和经验。
展开来讲就是需要了解各种架构的模式,深入源码级别的了解各个中间件的原理和高可用架构原理。
了解分布式系统一致性算法原理,在主主,主从,主备高可用架构有一定经验。
深刻理解IO模型,线程模型,序列化方式能写出高性能应用。
深刻理解微服务架构中服务发现,限流,负载均衡,出错处理等组件的原理。
深刻理解Redis,MongoDB,MySQL,HBase,ElasticSearch使用场景和原理。
跟随业界发展理解docker,k8s,Serverless所解决的问题。
行业专家?
本人还在第三阶段发育中,没有概念?
最后全栈的终极目标是自己创业!
PHP如何开发游戏?
php单独是没法开发游戏的,除非是文字游戏,一般顶多也只能作为游戏服务端使用,理论上可以用作任何形式的游戏后端。
但这只是理论,一个端游基本不会用php作为后端,就像你非要用php写桌面程序一样,不是不可以,但基本没人这么干。
php最经常用的是web端,所以可以用作比如网页游戏后端,微信小程序后端等等都是可以的。
那前端最起码的技术就是要css,js,canvas等。
安装了wampserver后怎么要PHPstrom写代码?
在安装了wampsever,在配置你的项目目录以后,在浏览器运行localhost及你的php测试页面,如果正常,就可以写php代码了!