PHP程序员必须掌握的知识

时间:2019-05-12 21:41:52下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《PHP程序员必须掌握的知识》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《PHP程序员必须掌握的知识》。

第一篇:PHP程序员必须掌握的知识

PHP5的优点

PHP5的最大特点是引入了面向对象的全部机制,并且保留了向下的兼容性。程序员不必再编写缺乏功能性的类,并且能够以多种方法实现类的保护。另外,在对象的集成等方面也不再存在问题。使用PHP5引进了类型提示和异常处理机制,能更有效的处理和避免错误的发生。

mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别

实例代码

$link=mysql_connect('localhost','root',”);mysql_select_db('abc',$link);$sql = “select * from book”;

$result = mysql_query($sql);

while($row = mysql_fetch_row($result)){

echo $row['cid'].'::'.$row[1].'
';}

$result = mysql_query($sql);

while($row = mysql_fetch_array($result)){

echo $row['cid'].'::'.$row[1].'
';}

$result = mysql_query($sql);

while($row = mysql_fetch_object($result)){

echo $row->cid.'::'.$row->title.”
”;}

$result = mysql_query($sql);

while($row = mysql_fetch_assoc($result)){

echo $row['cid'].'::'.$row[1].'
';}

?>

详细解释:

mysql_fetch_row,这个函数是从结果集中取一行作为枚举数据,从和指定的结果标识关联的结果集中取得一行数据并作为数组返回。每个结果的列 储存在一个数组的单元中,偏移量从 0 开始。注意,这里是从0开始偏移,也就是说不能用字段名字来取值,只能用索引来取值,所以如下代码是取不到值的:

while($row = mysql_fetch_row($res)){

echo $row['cid'].'::'.$row[1].”;

} //这里的$row['cid'] 取不到值。

mysql_fetch_array,从结果集中取得一行作为关联数组,或数字数组,或二者兼有,除了将数据以数字索引方式储存在数组中之外,还可以将数据作为关联索引储存,用字段名作为键名。也就是说他得到的结果像数组一样,可以用key或者索引来取值,所以

while($row = mysql_fetch_array($res)){ echo $row['cid'].'::'.$row[1].”;

}//这里$row['cid'],$row[1]都能得到相应的值。

mysql_fetch_object,顾名思义,从结果集中取得一行作为对象,并将字段名字做为属性。所以只有这样才能取到值

while($row = mysql_fetch_object($res)){ echo $row->cid.'::'.$row->title.”";

}

mysql_fetch_assoc,从结果集中取得一行作为关联数组,也就是说这个函数不能像mysql_fetch_row那样用索引来取值,只能用字段名字来取,所以

while($row = mysql_fetch_assoc($res)){ echo $row['cid'].'::'.$row[1].”;} //$row[1]这样是取不到值的补充一点:

mysql_fetch_array函数是这样定义的:array mysql_fetch_array(resource result [, int result_type]),返回根据从结果集取得的行生成的数组,如果没有更多行则返回 FALSE。

mysql_fetch_array()中可选的第二个参数 result_type 是一个常量,可以接受以下值:MYSQL_ASSOC,MYSQL_NUM 和 MYSQL_BOTH。其中:

1、mysql_fetch_assoc($result)==mysql_fetch_array($result,MYSQL_ASSOC);

2、mysql_fetch_row($result)==mysql_fetch_array($result,MYSQL_NUM);

所 以mysql_fetch_array()函数在某种程度上可以算是mysql_fetch_row()与 mysql_fetch_assoc()的集合。另外,mysql_fetch_array()另外还有MYSQL_BOTH参数,将得到一个同时包含关 联和数字索引的数组。

在来说句 $row = $db->fetch_array($query);

$db是人数据库操作 类,$db->fetch_array($query),fetch_array($query)是那个db类里的方法,$row = $db->fetch_array($query)这句的意思是从记录集$query中得到数据库中的一行记录。

实例代码:

$conn=@mysql_connect($host,$user,$pass);@mysql_select_db($database,$conn);$query=mysql_query($sql);

while($row=mysql_fetch_array($query)){ $rows[]=$row;}

索引(详解)

索引的优点:加快查询速度。

(如果你总结下索引的用途,其实也就这一点了,若是你的面试官说有其他的优点,那你完全可以告诉他,请你回去自己总结下索引这个到底是干什么的吧)

索引类型:

根据数据库的功能,可以在数据库设计器中创建四种索引:唯一索引、非唯一索引、主键索引和聚集索引。尽管唯一索引有助于定位信息,但为获得最佳性能结果,建议改用主键或唯一约束。

唯一索引:

唯一索引是不允许其中任何两行具有相同索引值的索引。

当现有数据中存在重复的键值时,大多数数据库不允许将新创建的唯一索引与表一起保存。数据库还可能防止添加将在表中创建重复键值的新数据。例如,如果在 employee 表中职员的姓(lname)上创建了唯一索引,则任何两个员工都不能同姓。

非唯一索引:

非唯一索引是相对唯一索引,允许其中任何两行具有相同索引值的索引。

当现有数据中存在重复的键值时,数据库是允许将新创建的索引与表一起保存。这时数据库不能防止添加将在表中创建重复键值的新数据。

主键索引:

数据库表经常有一列或列组合,其值唯一标识表中的每一行。该列称为表的主键。

在数据库关系图中为表定义主键将自动创建主键索引,主键索引是唯一索引的特定类型。该索引要求主键中的每个值都唯一。当在查询中使用主键索引时,它还允许对数据的快速访问。

聚集索引(也叫聚簇索引):

在聚集索引中,表中行的物理顺序与键值的逻辑(索引)顺序相同。一个表只能包含一个聚集索引。

如果某索引不是聚集索引,则表中行的物理顺序与键值的逻辑顺序不匹配。与非聚集索引相比,聚集索引通常提供更快的数据访问速度。

第二篇:PHP初级程序员应该掌握的知识

PHP初级程序员应该掌握的知识

很多PHP初学者不知道该怎么学好它,不知道从何下手,这里分享的PHP初级程序员应该掌握的知识,帮助你理清思路,为未来的学习铺好路。

1.Linux:

基本命令、操作、启动、基本服务配置(包括rpm安装文件,各种服务配置等);会写简单的shell脚本和awk/sed 脚本命令等。

2.Nginx:

做到能够安装配置nginx+php,知道基本的nginx核心配置选项,知道 server/fastcgi_pass/access_log 等基础配置,目标是能够让nginx+php_fpm顺利工作。

3.MySQL:

会自己搭建mysql,知道基本的mysql配置选项;知道innodb和myisam的区别,知道针对InnoDB和MyISAM两个引擎的不同 配置选项;知道基本的两个引擎的差异和选择上面的区别;能够纯手工编译搭建一个MySQL数据库并且配置好编码等正常稳定运行;核心主旨是能够搭建一个可 运行的MySQL数据库。

4.PHP:

基本语法数组、字符串、数据库、XML、Socket、GD/ImageMgk图片处理等等;熟悉各种跟MySQL操作链接的api(mysql /mysqli/PDO),知道各种编码问题的解决;知道常规熟练使用的PHP框架(ThinkPHP、Zendframework、Yii、Yaf 等);了解基本MVC的运行机制和为什么这么做,稍微知道不同的PHP框架之间的区别;能够快速学习一个MVC框架。能够知道开发工程中的文件目录组织,有基本的良好的代码结构和风格,能够完成小系统的开发和中型系统中某个模块的开发工作。

5.前端:

如果条件时间允许,可以适当学习下 HTML/CSS/JS 等相关知识,知道什么web标准,p+css的web/wap页面模式,知道 HTML5和HTML4的区别;了解一些基本的前端只是和JS框架(jQuery之类的);了解一些基本的JavaScript编程知识;(本项不是必须 项,如果有时间,稍微了解一下是可以的,不过不建议作为重点,除非个人有强烈兴趣)

6.系统设计:

能够完成小型系统的基本设计,包括简单的数据库设计,能够完成基本的:浏览器-> Nginx+PHP-> 数据库 架构的设计开发工作;能够支撑每天几十万到数百万流量网站的开发维护工作。

北大青鸟兰州校区与上百家IT知名企业签订用人协议,学员入学即可签订就业协议,就业方面全方位保障学员更好的就业。毕业时,学员可以获得全国免费推荐工作。

更多有关学习IT的问题,请点击咨询。

第三篇:Java程序员必须掌握的线程知识

Java程序员必须掌握的线程知识 Callable和Future Callable和Future出现的原因

创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。

这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。

而自从Java 1.5开始,就提供了Callable和Future,通过它们可以在任务执行完毕之后得到任务执行结果。

Callable和Future介绍

Callable接口代表一段可以调用并返回结果的代码;Future接口表示异步任务,是还没有完成的任务给出的未来结果。所以说Callable用于产生结果,Future用于获取结果。

Callable接口使用泛型去定义它的返回类型。Executors类提供了一些有用的方法在线程池中执行Callable内的任务。由于Callable任务是并行的(并行就是整体看上去是并行的,其实在某个时间点只有一个线程在执行),我们必须等待它返回的结果。

java.util.concurrent.Future对象为我们解决了这个问题。在线程池提交Callable任务后返回了一个Future对象,使用它可以知道Callable任务的状态和得到Callable返回的执行结果。Future提供了get()方法让我们可以等待Callable结束并获取它的执行结果。

Callable与Runnable

java.lang.Runnable吧,它是一个接口,在它里面只声明了一个run()方法:

publicinterfaceRunnable{

publicabstractvoid run();}

由于run()方法返回值为void类型,所以在执行完任务之后无法返回任何结果。

Callable位于java.util.concurrent包下,它也是一个接口,在它里面也只声明了一个方法,只不过这个方法叫做call():

publicinterfaceCallable{

/**

* Computes a result, or throws an exception if unable to do so.*

* @return computed result

* @throws Exception if unable to compute a result

*/

V call()throwsException;}

可以看到,这是一个泛型接口,call()函数返回的类型就是传递进来的V类型。

那么怎么使用Callable呢?

一般情况下是配合ExecutorService来使用的,在ExecutorService接口中声明了若干个submit方法的重载版本:

Future submit(Callable task); Future submit(Runnable task, T result);Future submit(Runnable task);

第一个submit方法里面的参数类型就是Callable。

暂时只需要知道Callable一般是和ExecutorService配合来使用的,具体的使用方法讲在后面讲述。

一般情况下我们使用第一个submit方法和第三个submit方法,第二个submit方法很少使用。

Future

Future就是对于具体的Runnable或者Callable任务的执行结果进行取消、查询是否完成、获取结果。必要时可以通过get方法获取执行结果,该方法会阻塞直到任务返回结果。

Future类位于java.util.concurrent包下,它是一个接口:

publicinterfaceFuture{

boolean cancel(boolean mayInterruptIfRunning);

boolean isCancelled();

boolean isDone();

V get()throwsInterruptedException,ExecutionException;

V get(long timeout,TimeUnit unit)

throwsInterruptedException,ExecutionException,TimeoutException;}

在Future接口中声明了5个方法,下面依次解释每个方法的作用:

cancel方法用来取消任务,如果取消任务成功则返回true,如果取消任务失败则返回false。参数mayInterruptIfRunning表示是否允许取消正在执行却没有执行完毕的任务,如果设置true,则表示可以取消正在执行过程中的任务。如果任务已经完成,则无论mayInterruptIfRunning为true还是false,此方法肯定返回false,即如果取消已经完成的任务会返回false;如果任务正在执行,若mayInterruptIfRunning设置为true,则返回true,若mayInterruptIfRunning设置为false,则返回false;如果任务还没有执行,则无论mayInterruptIfRunning为true还是false,肯定返回true。isCancelled方法表示任务是否被取消成功,如果在任务正常完成前被取消成功,则返回 true。

isDone方法表示任务是否已经完成,若任务完成,则返回true;

get()方法用来获取执行结果,这个方法会产生阻塞,会一直等到任务执行完毕才返回;

get(long timeout, TimeUnit unit)用来获取执行结果,如果在指定时间内,还没获取到结果,就直接返回null。

也就是说Future提供了三种功能:

1)判断任务是否完成;

2)能够中断任务;

3)能够获取任务执行结果。

因为Future只是一个接口,所以是无法直接用来创建对象使用的,因此就有了下面的FutureTask。FutureTask

FutureTask实现了RunnableFuture接口,这个接口的定义如下:

publicinterfaceRunnableFutureextendsRunnable,Future{

void run();}

可以看到这个接口实现了Runnable和Future接口,接口中的具体实现由FutureTask来实现。这个类的两个构造方法如下 :

publicFutureTask(Callable callable){

if(callable ==null)

thrownewNullPointerException();

sync =newSync(callable);

}

publicFutureTask(Runnable runnable, V result){

sync =newSync(Executors.callable(runnable, result));

} 如上提供了两个构造函数,一个以Callable为参数,另外一个以Runnable为参数。这些类之间的关联对于任务建模的办法非常灵活,允许你基于FutureTask的Runnable特性(因为它实现了Runnable接口),把任务写成Callable,然后封装进一个由执行者调度并在必要时可以取消的FutureTask。

FutureTask可以由执行者调度,这一点很关键。它对外提供的方法基本上就是Future和Runnable接口的组合:get()、cancel、isDone()、isCancelled()和run(),而run()方法通常都是由执行者调用,我们基本上不需要直接调用它。

一个FutureTask的例子

publicclassMyCallableimplementsCallable{

privatelong waitTime;

publicMyCallable(int timeInMillis){

this.waitTime=timeInMillis;

}

@Override

publicString call()throwsException{ Thread.sleep(waitTime);

//return the thread name executing this callable task

returnThread.currentThread().getName();

}

}

publicclassFutureTaskExample{

publicstaticvoid main(String[] args){

MyCallable callable1 =newMyCallable(1000);// 要执行的任务

MyCallable callable2 =newMyCallable(2000);

FutureTask futureTask1 =newFutureTask(callable1);// 将Callable写的任务封装到一个由执行者调度的FutureTask对象

FutureTask futureTask2 =newFutureTask(callable2);

ExecutorService executor =Executors.newFixedThreadPool(2);// 创建线程池并返回ExecutorService实例

executor.execute(futureTask1);// 执行任务

executor.execute(futureTask2);

while(true){

try{

if(futureTask1.isDone()&& futureTask2.isDone()){// 两个任务都完成System.out.println(“Done”);

executor.shutdown();// 关闭线程池和服务

return;

}

if(!futureTask1.isDone()){// 任务1没有完成,会等待,直到任务完成 System.out.println(“FutureTask1 output=”+futureTask1.get());

}

System.out.println(“Waiting for FutureTask2 to complete”);

String s = futureTask2.get(200L,TimeUnit.MILLISECONDS);

if(s!=null){

System.out.println(“FutureTask2 output=”+s);

}

}catch(InterruptedException|ExecutionException e){

e.printStackTrace();

}catch(TimeoutException e){

//do nothing

}

} }}

运行如上程序后,可以看到一段时间内没有输出,因为get()方法等待任务执行完成然后才输出内容.输出结果如下:

FutureTask1 output=pool-1-thread-1WaitingforFutureTask2 to completeWaitingforFutureTask2 to completeWaitingforFutureTask2 to completeWaitingforFutureTask2 to completeWaitingforFutureTask2 to completeFutureTask2 output=pool-1-thread-2Done

第四篇:PHP程序员

**的个人简历

个人资料

姓名: **电子邮件: ******@qq.com

名族: 汉出生日期: 1991/1/3

学历: 本科居住地址: 深圳福田

性别: 男手机号码: 186***7739

4求职意向

到岗时间:即时

期望职位:php程序员

工作性质:全职

专业技能

1、熟练掌握PHP,HTML,DIV+CSS,Javascript,Ajax,jQuery等Web开发技术。

2、熟练使用PDO、MySQL方式操作MySQL数据库系统,熟悉MySQL事物及存储过程。

3、熟悉HTML,DIV+CSS前台页面技术和XML的使用。

4、熟悉网页静态化、Smarty缓存,thinkPHP缓存,掌握Web防SQL注入。

5、孰悉MVC架构开发思想模式,熟练使用Smarty模板,ThinkPHP框架,ZendFramework框架。

6、熟练掌握Zend Studio, Dreamweaver,Notepad++, EclipsePHP等常用Web开发工具;

7、了解Linux基本操作。

项目经验 项目一

项目名称:地球新闻网

软件环境:

开发工具:

项目描述: linux+apache+mysql+php Zend Studio 1.该项目是一个集各种新闻的网站。2.前台采用div+css,javascript等

技术进行页面布局,Javascript和Jquery技术制作下拉菜单、表单验证、复选框等效果。3.后台采用全面向对象开发,良好的运用了MVC三层架

构模式。

责任描述:独立开发

项目体会:通过开发这次项目,使我对制作一个网站有了一个全面的了解,也同时增

加了我的技术能力;通过该网站使我了解只有想不到,没有做不到。同时

也想到在这个发展迅速的社会,我们只有不断努力学习新的技术才能满足

客户的要求。

 项目二

项目名称:聚焦购物商城

软件环境:

开发工具:

项目描述: windows+apache+mysql+php Zend Studio 8.0 该项目是一个大型的网站商城,采用thinkPHP主流框架开发。

前台包括:商品列表、搜索、商品详细页、注册、登录、购物车、会员

中心、评论等。后台有:商品管理、订单管理、会员管理、商家管理等。

满足用户购物流程的各种需求

责任描述: 负责完成了MySQL数据表、字段、索引的分析与创建,主页的图片轮换,商品详细

页,购物车模块,登录注册等功能,以及后台商品管理模块。

项目体会:通过此次项目的实战,让我对thinkPHP的掌握更加深刻,同时给我感觉的是使用模板的开发速度之快,更实现的HTML的代码与PHP代码的分

离,使得拥有更好的扩展以及维护。

工作经验

2012/8—2013/4业聚医疗器械(深圳)有限公司技术员 工作感想

之前的公司主要是生产和研发介入性医疗器械的一家公司,我的工作任务主要从事公司导管支架的研发,研发多种不同尺寸型号的球囊扩张导管。在我的工作中,使我学到了很多东西,让我变得更加细心,做事情更加注重细节,更有时间观念等等。

教育经历

 2013/4—2013/8达内PHP培训php程序员主要学习了:linux系统常用操作命令,HTML/CSS,Javascript/Jquery/Ajax的前台技术,学习了用Linux系统和Windows系统开发项目,学习了Smarty模板,Zendframework,thinkPHP框架的使用,学习了DEDECMS二次开发。

在学习的过程中,自己独立完成了一个小项目《地球新闻网》,和同学合作完

成了一个商城网站《聚焦购物》,通过这两个项目的实战,为我以后的工作打

下了坚实的基础。

 2008/9—2012/7湖北信息工程专修学院电子商务本科主要学习了:计算机应用基础,管理学,电子商务概论,网页设计与制作,电子商务法,商务沟通与谈判及商业职业道德专业课程,安全教育等课程。

通过这些课程的学习,使我对电子商务系统建设与管理打下了良好的基础,同时也使我拥有较强的沟通能力和职业道德水准。

个人评价 1.本人细心,乐观积极心态,吃苦耐劳,勇于挑战自我,热爱学习,喜欢总结;

2.具备良好的团队精神,能很好的与团队协作开发,有良好的沟通能力,喜欢交朋友;

3.性格开朗,阳光,喜欢篮球,游泳,羽毛球等体育运动。

第五篇:PHP程序员应掌握的5个基本概念

PHP程序员应掌握的5个基本概念

PHP程序员应掌握的基本概念都有哪些呢?下面由中公优就业的老师给大家揭秘一下。

1.框架

框架可以说是php开发中的一个最重要的问题。用php开发web应用程序时有很多方法,有很多开源的框架可以使用,可以帮助快速的开发,保持更高的一致性和有效性。其中比较好的框架包括cakephp,Symfony和CodeIgniter。很多框架还按照MVC设计模式。

2.模板引擎

如果您使用的不是一个框架来执行一个具体的设计模式,那么您想要使用的是模板引擎。不论你是自己创建或是使用现有的模板(如 Smarty),模板引擎都会使你的逻辑代码从HTML页面中独立出来(以及相关的CSS / js /等)。

3.代码重用

正如我先前提过的,php是所用语言中代码重用性最好的。从多中小的文档到整个数据库类,php开发者需要的时候可以随意的选择重用现有的代码。其实,你几乎可以不用编写一行代码就能建立起整个应用程序。

4.不重新开发现有的东西

很明显的一件事,只有少数的php开发者知道php本身有很多可用之处。忘记新的图书馆,或复杂的代码例程-先看看PHP手册。例如,你们有没有听过number_format(), parse_url(), wordwrap()或bbcode_parse()?看一下整个函数参考,选择一个类别,浏览一下。

5.IRC 是令人愉快的事

当你有个复杂的问题不能解决的时候,可以到IRC上。PHP非官方的支持频道,很多经验丰富的开发者陶醉其中。你需要一个IRC客户端,如果你用的Firefox,ChatZilla是一个很好的插件,当你需要帮助时,以irc://irc.freenode.net/php做为头部粘贴你的代码。张贴您的问题,并耐心等待;某种热心人(或多个)会给你答案。当你得到答案后,考虑一下其他需要帮助人的问题。

更多知识干货分享,尽在中公优就业,>>>点击进入。

点击查看>>>中公IT优就业封闭式培训,包食宿,学费贷款,交通补贴,推荐就业

下载PHP程序员必须掌握的知识word格式文档
下载PHP程序员必须掌握的知识.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    PHP程序员应该掌握的10项技能!

    一个PHP程序员应该掌握的10项技能! 很多学PHP的人一直也搞不清楚,一个PHP程序员和Java程序员或者是.net程序员有什么不同,告诉你,其实都一样!没有什么不同,下面的内容,就是针对一......

    中高级PHP程序员应该掌握哪些技术[最终版]

    网站建设定制专家www.xiexiebang.com 中高级PHP程序员应该掌握哪些技术? 中级PHP程序员 1.Linux 能够流畅的使用Shell脚本来完成很多自动化的工作;awk/sed/perl 也操作的......

    消防安全知识(必须掌握)

    消防安全知识 (全员培训、全员熟记、达到“一口清、问不倒”) 一、怎样报火警? 答:1、拨打火警电话119,并确认; 2、不要慌张,讲明起火单位名称,所在位置,起火物质是什么,有无人员被困,......

    Java程序员必须掌握的开发工具

    Java程序员必须掌握的开发工具 以下的开发工具,能帮助你成为一名高级java程序开发人员。 1.Eclipse 尽管IntelliJ IDEA、NetBeans和一些其他的IDE正在日益普及,但是有调查表明......

    程序员需要掌握的知识

    程序员需要掌握的知识 2011年11月3日 1:01 补充: (1)掌握一种方法学或者说思想,现在基本都是面向对象(OOA/OOD设计模式) (2)项目管理、体系结构、架构知识 (3)多参考经典代码 (4)加强英......

    PHP程序员应该掌握PHP编程与HTML表单(本站推荐)

    PHP程序员应该掌握PHP编程与HTML表单 一:学习目标 (1)、掌握HTML表单格式 (2)、掌握各种表单元素的常用属性 (3)、掌握各种表单元素的应用 (4)、掌握$_POST/GET变量 (5)、了解URL编码和......

    PHP程序员面试题

    北京融入网络科技有限公司 PHP工程师面试题 1、请写一个实现中文字串截取无乱码的方法。(超出部分用’…..’替换)。2、ThinkPHP框架中,下列定义有什么不同?$userModel = M(“Us......

    php程序员个人简历

    PHP 程序员简历 基 本 信 息 姓 年 名: 龄: Xxx 21 Xxxx 性 学 别: 历: 男 专科 PHP 程序员xxx@163.com 毕业院校: 电 话:期望职位: 邮箱地址: 专 业 技 能 核心语言: 核心语言:......