一小时入门PHP
[版权申明:本文系作者原创,转载请注明出处] 
文章出处:[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,格式就是
        <?php
        echo 'hello php'在php中,所有用户定义的函数都对大小写不敏感,但是在所有变量对大小写敏感。
常量和变量、数组、函数
我们使用符号来定义变量,在php中很多地方都用到了,感觉有点像jquery了,呵呵!
声明变量:
  $a=10;
    $a=20;
    $b=5;
    echo $a+$b;如果要定义常量的话可以使用:
  const  THE_VALUE=100;
    echo  THE_VALUE;也可以用函数来传值:
   function traceNum($a,$b)
    {
    echo "a=$a,b=$b";
    }
    traceNum(3,4);常量只能被赋值一次,而变量可以赋值多次。
流程控制、循环
php的流程控制可以使用if else来处理以及switch,和java类似,可以使用break和continue来控制循环.
下面是一个if循环的例子,这里注意的是elseif是连在一起写的,不要分开,和oracle中的存储函数类型,存储函数就是elsif来控制的,真的很像,呵呵!
    function getLevel($score){
    if($score>90){
    return '优秀';
    }elseif($score>80){
    return '良好';
    }elseif($score>60){
    return '合格';
    }else{
    return '不合格';
    }
    }
    echo getLevel(93);如果使用switch的话可以这样:
    function getLevel($score){
    $result='不合格';
    switch(intval($score/10)){
    case 10;
    case 9:
    $result='优秀';
    break;
    case 8:
    $result='良好';
    break;
    case 7:
    $result='好';
    break;
    case 6:
    $result='合格';
    break;
    default:
    $result='不合格';
    break;
    }
    return $result;
    }
    echo getLevel(93);类、方法
新建一个类:
 <?php
    class Hello{
    public function sayHello(){
    echo 'hello';
    }
    }这个地方和java非常相似啦,我就不说了!
就是引入文件使用:require,或者require_once
    include  'demo1.php';  //包含,如果没有不会报错。
    require  'demo1.php';  //依赖 ,如果没有就报错
    //同一个php在不同的地方重复引用,
    require_once  'demo1.php';新建一个man类,构造方法。
    class Man
    {
    /**
     * @param $age年龄
     * @param $name   名字
     *
     */
    public  function __construct($age,$name){
       // echo 'Construce  a man';
    $this->_age=$age;
    $this->_name=$name;
    }
    public function getAge(){
    return $this->_age;
    }
    public function getName(){
    return $this->_name();
    }
    private $_age,$_name;
    public static function sayHello(){
    echo 'hello man';
    }
    }库函数
获取时间:
 //获取时间
    //echo  time();
    date_default_timezone_set('Asia/Shanghai');
    //日期
    echo  date('Y-m-d H:i:s');
操作json
 //生成json格式的数据
    $arr=array(1,2,3,5,7,'hello');
    echo json_encode($arr);
    $obj=array('h'=>'hello','w'=>'world',array(3,4,5,7));
    echo json_encode($obj);
    //解码
    $jsonStr="{\"h\":\"hello\",\"w\":\"world\",\"0\":[3,4,5,7]}";
    $obj=json_decode($jsonStr);
    echo $obj->h;创建图片
    $img=imagecreate(400,300);
    imagecolorallocate($img,255,255,255);
    header('Content-type:image/png');
    imageellipse($img,200,200,50,50,imagecolorallocate($img,255,0,0));
    imagepng($img);为图片添加水印
    $img=imagecreatefrompng('img.png');
    imagestring($img,5,5,5,'www.tianfang1314.cn',imagecolorallocate($img,255,0,0));
    header('Content-type:image/png');
    imagepng($img);操作文本 
把数据写到data的文本中:
 $f=@fopen('data','w');
    fwrite($f,'hello php');
    fclose($f);把数据从data的文本中读取出来:
 $f=@fopen('data','r');
    while(!feof($f)){
    $content=fgets($f);
    echo $content;
    }
    fclose($f);输出内容:
 echo file_get_contents('data');上传文件:
html页面端:
     <form  action="upload.php"  method="post"  enctype="multipart/form-data">
          <input type="file"  name="file"  >
            <input type="submit" value="提交" />
        </form>php端:
    $file=$_FILES['file'];
    $fileName=$file['name'];
    move_uploaded_file($file['tmp_name'],$fileName);会话管理
这个的话和java中的cookie\session非常相似了。 
设置cookie:
 setcookie('name','tf');获取cookie:
    echo  $_COOKIE['name'];如果用户禁用了cookie的话我们可以通过url来传值处理。
session:
session_start();
$_SESSION['name']='tf';销毁session
  session_destroy();mysql连接
使用php和mysql的连接应该是非常重要和实用的功能了。下面以一个案例来说明php对mysql的表进行增删改查数据的操作。主要就是使用了mysql_query()来执行sql就可以了。非常简单便捷。
获取数据库的连接:
首先新建一个config.php放mysql数据库的连接配置文件:
 define('MYSQL_HOST','localhost:3306');   //mysql地址和端口号
    define('MYSQL_USER','zp');   //用户名
    define('MYSQL_PW','a');   //密码
    function connecDB(){
    $conn=mysql_connect(MYSQL_HOST,MYSQL_USER,MYSQL_PW);
    if(!$conn){
    die('can\'t  connection db');
    }
    mysql_select_db('day15');   //数据库的名字
    return  $conn;
    }使用php和html来生成一个表格。
    <?php
    require_once 'config.php';
    ?>
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title</title>
    </head>
    <body>
    <a href="adduser.html" >添加</a>
    <table width='100%'  style='text-align: center;' border='1' >
    <tr><th>id</th><th>用户名</th><th>密码</th><th>操作</th></tr>
    <?php
    /**
     * Created by PhpStorm.
     * User: asus
     * Date: 2016/8/26
     * Time: 14:28
     */
    $conn=connecDB();
       /* mysql_select_db("day15");*/
    $result=mysql_query("select * from phpuser",$conn);
    $dataCount=mysql_num_rows($result);
      //  echo $dataCount;
    for($i=0;$i<$dataCount;$i++){
    $result_arr=mysql_fetch_assoc($result);
    //print_r($result_arr);
    $id=$result_arr['id'];
    $name=$result_arr['uname'];
    $pwd=$result_arr['pwd'];
    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>";
    }
    ?>
    </table>
    </body>
    </html>添加数据:
    $name=$_POST['uname'];
    if(empty($name)){
    die('user name  not define');
    }
    $pwd=$_POST['pwd'];
    if(empty($pwd)){
    die('user pwd  not define');
    }
    require_once 'function.php';
    connecDB();
    $pwd=intval($pwd);
    mysql_query(" insert into phpuser(uname,pwd)  values('$name','$pwd')");
    if(mysql_errno()){
    echo mysql_error();
    }else{
    header("Location:alluser.php");
    }修改数据:
  mysql_query("update phpuser set uname='$name',pwd='$pwd'  where id='$id'");删除数据:
   mysql_query("delete from phpuser  where id='$id'");总结:php的入门非常简单,其门槛并不高,但是想要学深的话还是需要一点功夫的,很多语言都具有互通性,学会总结各种语言之间的不同点,根据不同语言的特点来完成不同功能的项目的开发是非常有必要的!有些东西不要说很简单很基础就得意忘形,还是需要潜心学习研究,永远不要骄傲自大!
本文中案例源码下载地址:https://github.com/sdksdk0/HelloPHP
一小时入门PHP的更多相关文章
- 《Qt Quick 4小时入门》学习笔记4
		http://edu.csdn.net/course/detail/1042/14806?auto_start=1 Qt Quick 4小时入门 第七章:处理鼠标与键盘事件 1.处理鼠标事件 鼠标信号 ... 
- 《Qt Quick 4小时入门》学习笔记3
		http://edu.csdn.net/course/detail/1042/14807?auto_start=1 Qt Quick 4小时入门 第八章:Qt Quick中的锚(anchors)布局 ... 
- 《Qt Quick 4小时入门》学习笔记2
		http://edu.csdn.net/course/detail/1042/14805?auto_start=1 Qt Quick 4小时入门 第五章:Qt Quick基本界面元素介绍 1. ... 
- 《Qt Quick 4小时入门》学习笔记
		http://edu.csdn.net/course/detail/1042/14804?auto_start=1 Qt Quick 4小时入门 第五章:Qt Quick里的信号与槽 QML中 ... 
- 一小时入门 Python
		因为需求, 需要用到py, 所以来学学py, 因为有java基础 一小时入门py语法是不成问题的, 但是仅仅入门基础语法而已, 不涉及算法,不涉及大数据,机器学习,人工智能, 但是py这么火爆,就在于 ... 
- iOS 开发-- Runtime 1小时入门教程
		1小时让你知道什么是Objective-C Runtime,并对它有一定的基本了解,可以在开发过程中运用自如. 三.Objective-C Runtime到底是什么东西? 简而言之,Objective ... 
- mongodb 两小时入门
		传统的计算机应用大多使用关系型数据库来存储数据,比如大家可能熟悉的MySql, Sqlite等等,它的特点是数据以表格(table)的形式储存起来的.数据库由一张张排列整齐的表格构成,就好像一个Exc ... 
- Esper复杂事务处理一小时入门
		来自小韩 什么是Esper 想要认识Esper,先要了解CEP(Complex Event Processing),到处都有,并且各方理解也有偏差,我就不赘述了. Esper就是CEP的一个java的 ... 
- 2小时入门Robot Framework
		1.介绍 1.1.介绍Robot Robot Framework是一个基于关键字驱动的自动化测试框架.通过该框架,测试人员可使用python封装关键字,并在非代码环境下使用关键字构建可被执行的测试用例 ... 
随机推荐
- hdu1051 Wooden Sticks---贪心
			题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1051 题目大意:给你n根木棍的长度和重量.根据要求求出制作该木棍的最短时间.建立第一个木棍需要1分钟 ... 
- vue-router动态路由 刷新页面 静态资源没有加载的原因
			在做项目的时候,发现刷新页面的时候,静态路由没有加载,度娘了一圈,终于解决了. vue-router使用history模式+使用嵌套路由: 访问路由和嵌套路由页面,显示正常,但是刷新页面的时候,嵌套路 ... 
- 爆炸,解体,入侵,你想得到的你想不到的大BUG们
			郑昀 创建于2017/9/29 最后更新于2017/10/6 提纲: 阿丽亚娜火箭的解体 阿波罗飞船的P01模式 德勤的Google+ 麻省理工的500英里邮件 又到了扶额兴叹的节气.(前文回顾:5年 ... 
- 机器学习基石:02 Learning to Answer Yes/No
			Perceptron Learning Algorithm 感知器算法, 本质是二元线性分类算法,即用一条线/一个面/一个超平面将1,2维/3维/4维及以上数据集根据标签的不同一分为二. 算法确定后, ... 
- 用redis的订阅发布解决了扫码支付实时响应的问题
			一.场景描述: PC收银台的浏览器展示了收款二维码,用户扫了支付二维码,支付完成后,浏览器需要实时响应支付结果. 二.问题描述: 扫码支付的支付结果一般通过服务端回调和主动查询来获取,显示二维码之后, ... 
- [Codeforces 946F]Fibonacci String Subsequences
			Description 题库链接 定义 \(F(x)\) 为 \(F(x-1)\) 与 \(F(x-2)\) 的连接(其中 \(F(0) = "0",F(1) = "1& ... 
- [HNOI 2002]跳蚤
			Description Z城市居住着很多只跳蚤.在Z城市周六生活频道有一个娱乐节目.一只跳蚤将被请上一个高空钢丝的正中央.钢丝很长,可以看作是无限长.节目主持人会给该跳蚤发一张卡片.卡片上写有N+1个 ... 
- [SCOI2008]城堡
			题目描述 在一个国家里,有n个城市(编号为0 到n-1).这些城市之间有n条双向道 路相连(编号为0 到n-1),其中编号为i的道路连接了城市i和城市ri(一条道 路可以连接一个城市和它自身),长度为 ... 
- bzoj 4945: [Noi2017]游戏
			Description Solution 首先我们发现一个位置如果不是 \('x'\),那么就只有两种选择 而 \('x'\) 的个数小于等于 \(8\),直接枚举是哪个就好了 然后就是 \(2-sa ... 
- 【BZOJ2809】【APIO2012】派遣
			Background 在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿. Description 在这个帮派里,有一名忍者被称之为Master.除了Master以外,每名忍者 ... 
