[版权申明:本文系作者原创,转载请注明出处]

文章出处:[http://blog.csdn.net/sdksdk0/article/details/52332296](http://blog.csdn.net/sdksdk0/article/details/52332296)


作者:朱培 ID:sdksdk0 邮箱: zhupei@tianfang1314.cn


最近在折腾那个安卓扫码登录的功能,然后网页端是用php的做了,于是乎看一下php的资料,发现其实和java、jsp有很多相通的地方啊,语法什么的,还有类的使用,感觉非常相似,一个小时就完全可以搞定了php的基础了,但是想要进一步深入的学习和了解还是需要时间的,这里的话一小时入门php的前提是首先关系型数据库总要非常熟悉吧,sql总要非常熟练的掌握了吧!常见的开源CMS系统:wordpress。DiscuzX论坛网站都是php的。

php简介

PHP是能让你生成动态网页的工具之一。PHP网页文件被当作一般HTML网页文件来处理并且在编辑时你可以用编辑HTML的常规方法编写PHP。

PHP代表:超文本预处理器(PHP: Hypertext Preprocessor)。PHP是完全免费的,不用花钱,你可以从PHP官方站点(http://www.php.net)自由下载。PHP遵守GNU公共许可(GPL),在这一许可下诞生了许多流行的软件诸如Linux和Emacs。你可以不受限制的获得源码,甚至可以从中加进你自己需要的特色。PHP在大多数Unix平台,GUN/Linux和微软Windows平台上均可以运行。

PHP5.0版本强化更多的功能。首先,完全实现面向对象,提供名为PHP兼容模式的功能。其次是XML功能,PHP5.0版本支持可直观地访问XML数据、名为SimpleXML的XML处理用界面。同时还强化了XMLWeb服务支持,而且标准支持SOAP扩展模块。数据库方面,PHP新版本提供旨在访问MySQL的新界面——MySQL。除此前的界面外,还可以使用面向对象界面和预处理语句(Prepared Statement)等MySQL的新功能.另外,PHP5.0上还捆绑有小容量RDBMS-SQLite.

环境搭建

首先我们需要先安装好apache,我这里用的是appserver来安装的。如果想要上传要公网的服务器上的话可以使用cygwin、ftp,我这里使用的集成IDE是phpstorm,感觉还是非常方便的,这种IDE的风格和androidStudio的都差不多,所以上手非常快,而且可以自动找到浏览器,总之是一款非常不错的IDE。安装配置这里不再重复啰嗦!

常见的名词:

  • cygwin:在windows中模拟linux的环境。
  • apache httped:服务器。
  • Nginx:服务器。
  • xampp:应用服务器,快速搭建开发环境。
  • phpStorm:php集成开发环境。
  • ftp:协议,上传文件。
  • ssh:一个命令,连接服务器。
  • scp:一个命令,上传和下载文件。

php基本语法

在phpstorm中新建一个工程HelloPHP,然后建一个文件夹base,在里面新建一个cc.php,格式就是

  1. <?php
  2. echo 'hello php'

在php中,所有用户定义的函数都对大小写不敏感,但是在所有变量对大小写敏感。

常量和变量、数组、函数

我们使用符号来定义变量,在php中很多地方都用到了,感觉有点像jquery了,呵呵!

声明变量:

  1. $a=10;
  2. $a=20;
  3. $b=5;
  4. echo $a+$b;

如果要定义常量的话可以使用:

  1. const THE_VALUE=100;
  2. echo THE_VALUE;

也可以用函数来传值:

  1. function traceNum($a,$b)
  2. {
  3. echo "a=$a,b=$b";
  4. }
  5. traceNum(3,4);

常量只能被赋值一次,而变量可以赋值多次。

流程控制、循环

php的流程控制可以使用if else来处理以及switch,和java类似,可以使用break和continue来控制循环.

下面是一个if循环的例子,这里注意的是elseif是连在一起写的,不要分开,和oracle中的存储函数类型,存储函数就是elsif来控制的,真的很像,呵呵!

  1. function getLevel($score){
  2. if($score>90){
  3. return '优秀';
  4. }elseif($score>80){
  5. return '良好';
  6. }elseif($score>60){
  7. return '合格';
  8. }else{
  9. return '不合格';
  10. }
  11. }
  12. echo getLevel(93);

如果使用switch的话可以这样:

  1. function getLevel($score){
  2. $result='不合格';
  3. switch(intval($score/10)){
  4. case 10;
  5. case 9:
  6. $result='优秀';
  7. break;
  8. case 8:
  9. $result='良好';
  10. break;
  11. case 7:
  12. $result='好';
  13. break;
  14. case 6:
  15. $result='合格';
  16. break;
  17. default:
  18. $result='不合格';
  19. break;
  20. }
  21. return $result;
  22. }
  23. echo getLevel(93);

类、方法

新建一个类:

  1. <?php
  2. class Hello{
  3. public function sayHello(){
  4. echo 'hello';
  5. }
  6. }

这个地方和java非常相似啦,我就不说了!

就是引入文件使用:require,或者require_once

  1. include 'demo1.php'; //包含,如果没有不会报错。
  2. require 'demo1.php'; //依赖 ,如果没有就报错
  3. //同一个php在不同的地方重复引用,
  4. require_once 'demo1.php';

新建一个man类,构造方法。

  1. class Man
  2. {
  3. /**
  4. * @param $age年龄
  5. * @param $name 名字
  6. *
  7. */
  8. public function __construct($age,$name){
  9. // echo 'Construce a man';
  10. $this->_age=$age;
  11. $this->_name=$name;
  12. }
  13. public function getAge(){
  14. return $this->_age;
  15. }
  16. public function getName(){
  17. return $this->_name();
  18. }
  19. private $_age,$_name;
  20. public static function sayHello(){
  21. echo 'hello man';
  22. }
  23. }

库函数

获取时间:

  1. //获取时间
  2. //echo time();
  3. date_default_timezone_set('Asia/Shanghai');
  4. //日期
  5. echo date('Y-m-d H:i:s');

操作json

  1. //生成json格式的数据
  2. $arr=array(1,2,3,5,7,'hello');
  3. echo json_encode($arr);
  4. $obj=array('h'=>'hello','w'=>'world',array(3,4,5,7));
  5. echo json_encode($obj);
  6. //解码
  7. $jsonStr="{\"h\":\"hello\",\"w\":\"world\",\"0\":[3,4,5,7]}";
  8. $obj=json_decode($jsonStr);
  9. echo $obj->h;

创建图片

  1. $img=imagecreate(400,300);
  2. imagecolorallocate($img,255,255,255);
  3. header('Content-type:image/png');
  4. imageellipse($img,200,200,50,50,imagecolorallocate($img,255,0,0));
  5. imagepng($img);

为图片添加水印

  1. $img=imagecreatefrompng('img.png');
  2. imagestring($img,5,5,5,'www.tianfang1314.cn',imagecolorallocate($img,255,0,0));
  3. header('Content-type:image/png');
  4. imagepng($img);

操作文本

把数据写到data的文本中:

  1. $f=@fopen('data','w');
  2. fwrite($f,'hello php');
  3. fclose($f);

把数据从data的文本中读取出来:

  1. $f=@fopen('data','r');
  2. while(!feof($f)){
  3. $content=fgets($f);
  4. echo $content;
  5. }
  6. fclose($f);

输出内容:

  1. echo file_get_contents('data');

上传文件:

html页面端:

  1. <form action="upload.php" method="post" enctype="multipart/form-data">
  2. <input type="file" name="file" >
  3. <input type="submit" value="提交" />
  4. </form>

php端:

  1. $file=$_FILES['file'];
  2. $fileName=$file['name'];
  3. move_uploaded_file($file['tmp_name'],$fileName);

会话管理

这个的话和java中的cookie\session非常相似了。

设置cookie:

  1. setcookie('name','tf');

获取cookie:

  1. echo $_COOKIE['name'];

如果用户禁用了cookie的话我们可以通过url来传值处理。

session:

  1. session_start();
  2. $_SESSION['name']='tf';

销毁session

  1. session_destroy();

mysql连接

使用php和mysql的连接应该是非常重要和实用的功能了。下面以一个案例来说明php对mysql的表进行增删改查数据的操作。主要就是使用了mysql_query()来执行sql就可以了。非常简单便捷。

获取数据库的连接:

首先新建一个config.php放mysql数据库的连接配置文件:

  1. define('MYSQL_HOST','localhost:3306'); //mysql地址和端口号
  2. define('MYSQL_USER','zp'); //用户名
  3. define('MYSQL_PW','a'); //密码
  4. function connecDB(){
  5. $conn=mysql_connect(MYSQL_HOST,MYSQL_USER,MYSQL_PW);
  6. if(!$conn){
  7. die('can\'t connection db');
  8. }
  9. mysql_select_db('day15'); //数据库的名字
  10. return $conn;
  11. }

使用php和html来生成一个表格。

  1. <?php
  2. require_once 'config.php';
  3. ?>
  4. <!DOCTYPE html>
  5. <html lang="en">
  6. <head>
  7. <meta charset="UTF-8">
  8. <title>Title</title>
  9. </head>
  10. <body>
  11. <a href="adduser.html" >添加</a>
  12. <table width='100%' style='text-align: center;' border='1' >
  13. <tr><th>id</th><th>用户名</th><th>密码</th><th>操作</th></tr>
  14. <?php
  15. /**
  16. * Created by PhpStorm.
  17. * User: asus
  18. * Date: 2016/8/26
  19. * Time: 14:28
  20. */
  21. $conn=connecDB();
  22. /* mysql_select_db("day15");*/
  23. $result=mysql_query("select * from phpuser",$conn);
  24. $dataCount=mysql_num_rows($result);
  25. // echo $dataCount;
  26. for($i=0;$i<$dataCount;$i++){
  27. $result_arr=mysql_fetch_assoc($result);
  28. //print_r($result_arr);
  29. $id=$result_arr['id'];
  30. $name=$result_arr['uname'];
  31. $pwd=$result_arr['pwd'];
  32. echo "<tr><td>$id</td><td>$name</td><td>$pwd</td><td><a href='updateuser.php?id=$id'>修改</a><a href='deleteuser.php?id=$id'>删除</a></td></tr>";
  33. }
  34. ?>
  35. </table>
  36. </body>
  37. </html>

添加数据:

  1. $name=$_POST['uname'];
  2. if(empty($name)){
  3. die('user name not define');
  4. }
  5. $pwd=$_POST['pwd'];
  6. if(empty($pwd)){
  7. die('user pwd not define');
  8. }
  9. require_once 'function.php';
  10. connecDB();
  11. $pwd=intval($pwd);
  12. mysql_query(" insert into phpuser(uname,pwd) values('$name','$pwd')");
  13. if(mysql_errno()){
  14. echo mysql_error();
  15. }else{
  16. header("Location:alluser.php");
  17. }

修改数据:

  1. mysql_query("update phpuser set uname='$name',pwd='$pwd' where id='$id'");

删除数据:

  1. mysql_query("delete from phpuser where id='$id'");

总结:php的入门非常简单,其门槛并不高,但是想要学深的话还是需要一点功夫的,很多语言都具有互通性,学会总结各种语言之间的不同点,根据不同语言的特点来完成不同功能的项目的开发是非常有必要的!有些东西不要说很简单很基础就得意忘形,还是需要潜心学习研究,永远不要骄傲自大!

本文中案例源码下载地址:https://github.com/sdksdk0/HelloPHP

一小时入门PHP的更多相关文章

  1. 《Qt Quick 4小时入门》学习笔记4

    http://edu.csdn.net/course/detail/1042/14806?auto_start=1 Qt Quick 4小时入门 第七章:处理鼠标与键盘事件 1.处理鼠标事件 鼠标信号 ...

  2. 《Qt Quick 4小时入门》学习笔记3

    http://edu.csdn.net/course/detail/1042/14807?auto_start=1 Qt Quick 4小时入门 第八章:Qt Quick中的锚(anchors)布局 ...

  3. 《Qt Quick 4小时入门》学习笔记2

    http://edu.csdn.net/course/detail/1042/14805?auto_start=1   Qt Quick 4小时入门 第五章:Qt Quick基本界面元素介绍   1. ...

  4. 《Qt Quick 4小时入门》学习笔记

    http://edu.csdn.net/course/detail/1042/14804?auto_start=1   Qt Quick 4小时入门 第五章:Qt Quick里的信号与槽   QML中 ...

  5. 一小时入门 Python

    因为需求, 需要用到py, 所以来学学py, 因为有java基础 一小时入门py语法是不成问题的, 但是仅仅入门基础语法而已, 不涉及算法,不涉及大数据,机器学习,人工智能, 但是py这么火爆,就在于 ...

  6. iOS 开发-- Runtime 1小时入门教程

    1小时让你知道什么是Objective-C Runtime,并对它有一定的基本了解,可以在开发过程中运用自如. 三.Objective-C Runtime到底是什么东西? 简而言之,Objective ...

  7. mongodb 两小时入门

    传统的计算机应用大多使用关系型数据库来存储数据,比如大家可能熟悉的MySql, Sqlite等等,它的特点是数据以表格(table)的形式储存起来的.数据库由一张张排列整齐的表格构成,就好像一个Exc ...

  8. Esper复杂事务处理一小时入门

    来自小韩 什么是Esper 想要认识Esper,先要了解CEP(Complex Event Processing),到处都有,并且各方理解也有偏差,我就不赘述了. Esper就是CEP的一个java的 ...

  9. 2小时入门Robot Framework

    1.介绍 1.1.介绍Robot Robot Framework是一个基于关键字驱动的自动化测试框架.通过该框架,测试人员可使用python封装关键字,并在非代码环境下使用关键字构建可被执行的测试用例 ...

随机推荐

  1. scrollTop doesn't scroll on Chrome 61

    在chrome61 不支持滚动 解决方案: Use document.scrollingElement if supported, and fall back to the current code. ...

  2. 类相关的BIF

    1.>>> issubclass(C,A)#判断c是A的子类,返回真假 2.>>> isinstance(b1,B) #判断c1是B类的实例化对象,返回真假 3.& ...

  3. ng-model,ng-value,ng-bind,{{}}----angularJS数据绑定

    最典型用法 双向绑定 <input type="text" value="{{apple}}" ng-model="apple" &g ...

  4. 数据结构-快速排序(C#实现)

    快速排序的主要思路: 1.在数组首尾处各设一个标记 2.取出数组第一个值作为中枢值 3.所有数据跟中枢值比较:比中枢值小的放中枢值左边,首部标记++往右推一位,大的放中枢值右边,尾部标记--往左推一位 ...

  5. Hive优化案例

    1.Hadoop计算框架的特点 数据量大不是问题,数据倾斜是个问题. jobs数比较多的作业效率相对比较低,比如即使有几百万的表,如果多次关联多次汇总,产生十几个jobs,耗时很长.原因是map re ...

  6. [LeetCode] Largest Palindrome Product 最大回文串乘积

    Find the largest palindrome made from the product of two n-digit numbers. Since the result could be ...

  7. 如何理解java是一个面向对象的语言?(转自Hollis的直面java)

    要想理解这个问题?需要考虑很多 1.什么是面向对象 把问题分解成一个一个步骤,对每个步骤进行相应的抽象,形成对象.通过不同对象之间的调用,组合解决问题,也就是说,在面向对象的编程中,要把属性,行为等封 ...

  8. Linux下 Apache Vhost 配置 防止403

    首先,贴一份正确的配置(最简单的) <VirtualHost *:80> DocumentRoot /home/ubuntu/www/spider/public ServerName sp ...

  9. linux x86内核中的分页机制

    Linux采用了通用的四级分页机制,所谓通用就是指Linux使用这种分页机制管理所有架构的分页模型,即便某些架构并不支持四级分页.对于常见的x86架构,如果系统是32位,二级分页模型就可满足系统需求: ...

  10. UVA 1146 Now or later

    The Terminal Radar Approach CONtrol (TRACON) controls aircraft approaching and departing when they a ...