PHP study

basic knowledge

Posted by Chaoran on May 12, 2018

“To be a better girl ”

PHP 变量

  • 定义在函数外部的就是全局变量

    作用域从定义处一直到文件结尾

  • 函数内定义的变量就是局部变量

    作用域为函数定义范围内

  • 函数之间存在作用域互不影响
  • 函数内访问全局变量需要 global 关键字或者使用 $GLOBALS[index] 数组

在函数中直接使用全局变量

  • 通过 global 关键字声明
  • 通过 php 中自定义的 $GLOBALS 数组获取

      <?php
      $a=5;
      $b=3;
      function t1()
      {  
          global $a,$b;
          echo $a-$b;  // 输出 2
      }
      t1();
    
      echo PHP_EOL;
    
      function t2()
      {
          echo $GLOBALS['a']-$GLOBALS['b'];  // 输出 2
      }
      t2();
      ?>
    

echo 和 print 语句

  • echo():

    可以一次输出多个值,多个值之间用逗号分隔。echo是语言结构(language construct),而并不是真正的函数,因此不能作为表达式的一部分使用。

  • print():

    打印一个值(它的参数),如果字符串成功显示则返回true,否则返回false

  • print_r():

    打印复合数组,以括起来的键和值得列表形式显示,并以Array开头。 print_r()输出布尔值和NULL的结果没有意义,因为都是打印”\n”。因此用 var_dump() 函数更适合调试。

  • var_dump():

    判断一个变量的类型与长度,并输出变量的数值 如果变量有值输的是变量的值并回返数据类型。 此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。

    $c=[1,2,3,4];
    print_r($c);
    // Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 )

    var_dump($c);
    /*  D:\E\code\web\PHPStudy\basic\basic_01.php:12:
    array (size=4)
      0 => int 1
      1 => int 2
      2 => int 3
      3 => int 4
    */

EOF(heredoc)

  • 必须后接分号,否则编译通不过。
  • EOF 可以用任意其它字符代替,只需保证结束标识与开始标识一致
  • 结束标识必须顶格独自占一行(即必须从行首开始,前后不能衔接任何空白和字符)
  • 开始标识可以不带引号或带单双引号,不带引号与带双引号效果一致,解释内嵌的变量和转义符号,带单引号则不解释内嵌的变量和转义符号
  • 当内容需要内嵌引号(单引号或双引号)时,不需要加转义符,本身对单双引号转义

数据

类型
  • String(字符串)
  • Integer(整型)
  • Float(浮点型)
  • Boolean(布尔型)
  • Array(数组)
  • Object(对象)
  • NULL(空值)
常量

bool define ( string $name , mixed $value [, bool $case_insensitive = false ] ) 默认大小写敏感

define("GREETING", "hello", true);
//echo greeting;
function greet(){
    echo "say ",greeting; //say hello
    define("user","chaoran",true);

}
greet();
echo user; // chaoran
字符串
  • 并置运算符 .
  • strlen() 返回字符串长度
  • strpos() 在字符串内查找一个字符或一段指定的文本
echo strlen("hello world") // 12
echo strpo("hello world","world") // 6
数组
  • 数值数组
    • 数字 id
    • count() 返回数组长度
    • 遍历 for $cars=array("Volvo","BMW","Toyota");
  • 关联数组
    • 遍历 foreach
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
// or:

$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";

foreach($age as $x=>$x_value)
{
    echo "Key=" . $x . ", Value=" . $x_value;
    echo "<br>";
}

PHP 包含文件

  • require 生成一个致命错误(E_COMPILE_ERROR),在错误发生后脚本会停止执行。
  • include 生成一个警告(E_WARNING),在错误发生后脚本会继续执行。
include 'filename';

// 或者

require 'filename';

文件

文件处理
  • fopen()

    打开文件

      $file = fopen("welcome.txt", "r");
      // 无法打开则返回0(false)
      $file=fopen("welcome.txt","r") or exit("Unable to open file!");
      // 打不开时生成一段消息
    

    fopen

  • fclose()

    关闭文件

  • EOF

    检测文件末尾 feof($file)

  • fgets()

    逐行读取文件

  • fgetc()

    逐字符读取文件

文件上传
  • form enctype

    规定了提交表单时的内容类型,二进制数据 “multipart/form-data”

  • type="file"

    把输入作为文件处理

  • $_FILES["file"]["prams"]

    第二个下标可以是 “name”、”type”、”size”、”tmp_name” 或 “error”

  • file_exists(path/filename)

    判断文件是否存在

  • move_uploaded_file($_FILES["file"]["tmp_name"], newpath)

<?php
// 允许上传的图片后缀
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
echo $_FILES["file"]["size"];
$extension = end($temp);     // 获取文件后缀名
if ((($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/png"))
// && ($_FILES["file"]["size"] < 204800)   // 小于 200 kb
&& in_array($extension, $allowedExts))
{
	if ($_FILES["file"]["error"] > 0)
	{
		echo "错误:: " . $_FILES["file"]["error"] . "<br>";
	}
	else
	{
		echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";
		echo "文件类型: " . $_FILES["file"]["type"] . "<br>";
		echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
		echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"] . "<br>";
		
		// 判断当期目录下的 upload 目录是否存在该文件
		// 如果没有 upload 目录,你需要创建它,upload 目录权限为 777
		if (file_exists("upload/" . $_FILES["file"]["name"]))
		{
			echo $_FILES["file"]["name"] . " 文件已经存在。 ";
		}
		else
		{
			// 如果 upload 目录不存在该文件则将文件上传到 upload 目录下
			move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
			echo "文件存储在: " . "upload/" . $_FILES["file"]["name"];
		}
	}
}
else
{
	echo "非法的文件格式";
}
?>

php 视频教程

web 服务器

接收用户请求,回复用户的数据

  • nginx

    • 轻量级的web 服务器/反向代理服务器
    • 占有内存少,并发性强
  • apache

请求过程

web请求 web请求

tips

  • 查看域名对应ip
    • ping
    • nslookup
  • netstat
    • netstat -an more

      查看监听端口,如果有 more 表示分页

    • netstat -anb more

      查看哪个程序在监听端口