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

文章出处:[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的更多相关文章

  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. POJ-2253 Frogger---最短路变形&&最大边的最小值

    题目链接: https://vjudge.net/problem/POJ-2253 题目大意: 青蛙A想访问青蛙B,必须跳着石头过去,不幸的是,B所在的石头太远了,需要借助其他的石头,求从A到B的路径 ...

  2. svg 五花 元辅音 助读器

    如图,使用svg 创建5个圆,中间 辅音字母,外圈 元音字母 以及 示例单词. 可以使用  提交 按钮 进行更新

  3. c#之异步Socket通信

    0.基于上一篇的c#之Socket(同步)通信,在几个大神评论之后,发现是有挺多地方不足的,所以写了一个改进版本的基于c#的异步Socket通信.再加深一下对Socket的使用和理解.其中客户端和服务 ...

  4. [SDOI 2011]消耗战

    Description 题库链接 给你一棵 \(n\) 个节点根节点为 \(1\) 的有根树,有边权. \(m\) 次询问,每次给出 \(k_i\) 个关键点.询问切断一些边,使这些点到根节点不连通, ...

  5. [CEOI 2004]Sweet

    Description 题面链接 有 \(n\) 种糖果.第 \(i\) 种糖果有 \(m_i\) 个.取出一些糖果,至少 \(a\) 个,但不超过 \(b\) 个.求方案数. \(1\leq n\l ...

  6. LGTB 与序列

    LGTB 有一个长度为N 的序列A,现在他想构造一个新的长度为N 的序列B,使得B 中的任意两个数都 互质. 并且他要使ai与bi对应项之差最小 请输出最小值 输入 第一行包含一个数N 代表序列初始长 ...

  7. WISCO信息组NOIP模拟赛-数据结构

    传送门 差分+暴力 #include<cstdio> #include<cstdlib> #include<algorithm> #include<cstri ...

  8. Polya计数

    Let it Bead Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5365   Accepted: 3585 Descr ...

  9. python中type dtype astype 的用法

    1.type 获取数据类型 2.dtype 数组元素的类型 3.astype 修改数据类型

  10. MVC简单随笔

    MVC的具体含义是:model+view+controller,即模型+视图+控制它们各自处理自己的任务: (1)模型(model):模型持有所有的数据.状态和程序逻辑.模型独立于视图和控制器.(2) ...