php 的艺术体系

语法

  1. 变/常量: $a = 1:变量

bool define ( string $name , mixed $value [, bool $case_insensitive = false ] ):常量

  1. 输出 echo :用于输出字符串 print:用与输出 echo 输出的速度比print快,echo没有返回值,print有返回值
<?php
$txt1="学习 PHP";
$txt2="RUNOOB.COM";
$cars=array("Volvo","BMW","Toyota");
 
echo $txt1;
echo "<br>";
echo "在 $txt2 学习 PHP ";
echo "<br>";
echo "我车的品牌是 $cars[1]";
?>

说明:
1. 官方案例中使用了{$cars[1]},它与$cars[1]等价。

  1. 数组 > 1. 数据的生命$array[0] =这样的方式可以声明 > 2. array(); 用与声明一个数组 > 3. 数组的嵌套:也就是array()的嵌套。 > 4. 数组的长度count($array)函数获取 > 5. map 的对象 $array['nao']= > 6.
<?php
// 二维数组:
$cars = array
(
    array("Volvo",100,96),
    array("BMW",60,59),
    array("Toyota",110,100)
);
?>

同时数据可以表示map

<?php 
$sites = array 
( 
    "runoob"=>array 
    ( 
        "菜鸟教程", 
        "http://www.runoob.com" 
    ), 
    "google"=>array 
    ( 
        "Google 搜索", 
        "http://www.google.com" 
    ), 
    "taobao"=>array 
    ( 
        "淘宝", 
        "http://www.taobao.com" 
    ) 
); 
print("<pre>"); // 格式化输出数组 
print_r($sites.); 
print("</pre>"); 
?>

如何获取?
可以通过$sites[taobao][0]来获取map中的数据

逻辑语句

java 一样

  • while
while (条件)
{
要执行的代码;
}
  • do...while
do
{
要执行的代码;
}
while (条件);

函数定义

语法
function functionName()
{
要执行的代码;
}

说明:参数可以设置默认值

function fn($a = 1,$b = 2){
    echo $a;
    echo '<br>';
    echo $b;
}

魔法变量

  • __LINKE__ 当前行数
  • __FILE__
  • __DIR__
  • __FUNCTION__
  • __CLASS__
  • __TRAIT__:真正使用时在对应的重写的方法前加上trait
<?php
class Base {
    public function sayHello() {
        echo 'Hello ';
    }
}
 
trait SayWorld {
    public function sayHello() {
        parent::sayHello();
        echo 'World!';
    }
}
 
class MyHelloWorld extends Base {
    use SayWorld;
}
 
$o = new MyHelloWorld();
$o->sayHello();
?>
//结果:hello world
  • __METHOD__
  • __NAMESPACE__:命名空间,namespace MyProject

高级特性

表单

提交给自身:

<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>

正则方法校验

preg_match()

校验输出

test_input()
- $_GET()与$_POST对象

日期

string date ( string $format [, int $timestamp ] )

文件操作

打开一个文件

fopen()

案例:$file=fopen("welcome.txt","r") or exit("Unable to open file!");

关闭一个文件

fclose($file);

检测文件末尾

if (feof($file)) echo "文件结尾";

行读取文件

echo fgets($file). "<br>";

字符读取

echo fgetc($file);

文件上传

$_FILES:表示上传文件的对象

\(_FILES["file"]["name"] - 上传文件的名称
\)_FILES["file"]["type"] - 上传文件的类型
\(_FILES["file"]["size"] - 上传文件的大小,以字节计
\)_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称
$_FILES["file"]["error"] - 由文件上传导致的错误代码

限制

cookie

setcookie(name, value, expire, path, domain);

说明:

1. name:key
2. value:值
3. expire :有效期
4. path:
5. domain : 主域
6. 获取cookie的值: $_COOKIE[]

SESSION

开始

session_start()

获取

$_SESSION[]

消除值

unset()

判断是否有相关值

isset()

销毁

session_destroy();

使用email

方法

mail(to,subject,message,headers,parameters)

说明
  1. to :接受者
  2. subject :主题
  3. message :消息
  4. headers :标题
  5. paramters :额外的参数
案例
<?php
$to = "someone@example.com";         // 邮件接收者
$subject = "参数邮件";                // 邮件标题
$message = "Hello! 这是邮件的内容。";  // 邮件正文
$from = "someonelse@example.com";   // 邮件发送者
$headers = "From:" . $from;         // 头部信息设置
mail($to,$subject,$message,$headers);
echo "邮件已发送";
?>

安全校验
1. spamcheck():email 是否合法
2. filter_var($field, FILTER_SANITIZE_EMAIL);
3. filter_var($field, FILTER_VALIDATE_EMAIL)

json

json_encode:
json_decode:

xml

  • 加载输出 或者 simplexml_load_file();
$xmlDoc = new Document();
$xmlDoc->load('note.xml');
$x = $xmlDoc->documentElement;
foreach ($x->childNodes AS $item)
{
print $item->nodeName . " = " . $item->nodeValue . "<br>";
}

数据库

连接:

$servername = "localhost";
$username = "username";
$password = "password";
$conn = new mysqli($servername, $username, $password);
//$conn = mysqli_connect($servername, $username, $password);
// 检测连接
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
} 
echo "连接成功";

执行sql

   $conn->query($sql) === TRUE
   //mysqli_query($conn, $sql)
  // mysqli_multi_query($conn, $sql):多条记录

预处理

使用mysqli
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);

// 检测连接
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}

// 预处理及绑定
$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES(?, ?, ?)");
$stmt->bind_param("sss", $firstname, $lastname, $email);

// 设置参数并执行
$firstname = "John";
$lastname = "Doe";
$email = "john@example.com";
$stmt->execute();

$firstname = "Mary";
$lastname = "Moe";
$email = "mary@example.com";
$stmt->execute();

$firstname = "Julie";
$lastname = "Dooley";
$email = "julie@example.com";
$stmt->execute();

echo "新记录插入成功";

$stmt->close();
$conn->close();
通常使用的PDO来做预处理操作
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // 设置 PDO 错误模式为异常
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // 预处理 SQL 并绑定参数
    $stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) 
    VALUES (:firstname, :lastname, :email)");
    $stmt->bindParam(':firstname', $firstname);
    $stmt->bindParam(':lastname', $lastname);
    $stmt->bindParam(':email', $email);

    // 插入行
    $firstname = "John";
    $lastname = "Doe";
    $email = "john@example.com";
    $stmt->execute();

    // 插入其他行
    $firstname = "Mary";
    $lastname = "Moe";
    $email = "mary@example.com";
    $stmt->execute();

    // 插入其他行
    $firstname = "Julie";
    $lastname = "Dooley";
    $email = "julie@example.com";
    $stmt->execute();

    echo "新记录插入成功";
}
catch(PDOException $e)
{
    echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
?>

读取数据

PDO
  • 设置成关联数组

$result = $stmt->setFetchMode(PDO::FETCH_ASSOC);

  • 遍历获取值
foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) { 
        echo $v;
    }
    $dsn = null;
mysqli
  • 获取值 $result->num_rows 获取当前的行数
  • 遍历
while($row = $result->fetch_assoc()) {
        echo "<br> id: ". $row["id"]. " - Name: ". $row["firstname"]. " " . $row["lastname"];
    }
} else {
    echo "0 个结果";
}

到此基础部分已经结束,但是呢,我们的工作才刚刚开始,那么学完之后,我们需要做的事情是什么呢?

  • get,post 请求后台返回一个页面,获取参数
  • 页面的文件上传功能
  • 文件下载功能的实现
  • 返回一个验证码功能
  • 返回一个json 数据
  • 设置session,设置cookie, 与redis 整合。
  • 使用webservice
  • 预定义的变量
posted @ 2017-03-22 10:46  zcooool  阅读(147)  评论(0编辑  收藏  举报