[PHP] 01 - Hypertext Preprocessor

超级文本预处理语言:http://php.net/

集成的服务器组件,它已经包含了 PHP、Apache、Mysql 等服务

 

PHP 7
 
Laravel 框架

https://laravel.com/

看documentation
涵盖了所有基础概念。
 
 
了解一下web开发的基础比如session, cookie等等。
 

 

 

 

基础语法篇


[1] 基本语法借鉴c语言

[2] 与c语言的区别

 

一、变量

[1] 弱类型语言

[2] PHP 变量作用域

    • local    见 [3]
    • global  见 [3]
    • static
    • parameter
<?php 
$x=5; // 全局变量 

function myTest() 
{ 
    $y=10; // 局部变量 
    echo "<p>测试函数内变量:<p>"; 
    echo "变量 x 为: $x";     // 注意:不是全局变量
    echo "<br>"; 
    echo "变量 y 为: $y"; 
}  

myTest(); 

echo "<p>测试函数外变量:<p>"; 
echo "变量 x 为: $x"; 
echo "<br>"; 
echo "变量 y 为: $y";           // 注意:也不能读取函数内部的局部变量
?>

 

[3] PHP 将所有全局变量存储在一个名为 $GLOBALS[index] 的数组中;global也可用于函数内访问全局变量。

<?php
$x=5;
$y=10;

function myTest()
{
    $GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
} 

-----------------------------------------------
function myTest()
{
global $x,$y;
$y=$x+$y;
}

myTest();
echo $y; ?>

 

[4] 常量在定义后默认是全局变量

<?php
// 区分大小写的常量名
define("GREETING", "欢迎访问 Runoob.com");
echo GREETING;    // 输出 "欢迎访问 Runoob.com"
echo '<br>';
echo greeting;   // 输出 "greeting"
?>
----------------------------------------------
<?php // 不区分大小写的常量名 define("GREETING", "欢迎访问 Runoob.com", true); echo greeting; // 输出 "欢迎访问 Runoob.com" ?>

 

[5] 魔术常量

__LINE__

 

__FILE__

 文件的完整路径和文件名

__DIR__

 

 __FUNCTION__

 函数名称

__CLASS__

 

 __TRAIT__

 被声明的作用区域

 __METHOD__

 类的方法名

__NAMESPACE__

 

关于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();
?>

 

[6] 超级全局变量

    • PHP $_SERVER
<?php 
echo $_SERVER['PHP_SELF'];
echo "<br>";
echo $_SERVER['SERVER_NAME'];
echo "<br>";
echo $_SERVER['HTTP_HOST'];
echo "<br>";
echo $_SERVER['HTTP_REFERER'];
echo "<br>";
echo $_SERVER['HTTP_USER_AGENT'];
echo "<br>";
echo $_SERVER['SCRIPT_NAME'];
?>

Result: 

/try/demo_source/demo_global_server.php
www.runoob.com
www.runoob.com
http://www.runoob.com/try/showphp.php?filename=demo_global_server
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36

/try/demo_source/demo_global_server.php
    • PHP $_REQUEST

用于收集HTML表单提交的数据。

<body>

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>

<?php 
$name = $_REQUEST['fname']; 
echo $name; 
?>

</body>
    • PHP $_POST

应用于收集表单数据。

<body>

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>

<?php 
$name = $_POST['fname']; 
echo $name; 
?>

</body>
    • PHP $_GET

应用于收集表单数据

<body>

<a href="test_get.php?subject=PHP&web=runoob.com">测试 $_GET</a>

</body>

 

 

二、打印字符串

  • echo - 可以输出一个或多个字符串
  • print - 只允许输出一个字符串,返回值总为 1【所以慢】
  • EOF - 按照原样,包括换行格式什么的,输出在其内部的东西
<?php
$name="runoob";
$a= <<<EOF
    "abc"$name
    "123"
EOF;
// 结束需要独立一行且前后不能空格
echo $a;
?>

Ref: PHP EOF(heredoc)的使用方法

部分的实现了界面与代码的准分离,phpwind模板就是一个典型的例子。

 

  • String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值)。
  • var_dump 函数
[Integer]

<?php $x = 5985; var_dump($x); echo "<br>"; $x = -345; // 负数 var_dump($x); echo "<br>"; $x = 0x8C; // 十六进制数 var_dump($x); echo "<br>"; $x = 047; // 八进制数 var_dump($x); ?>
[Float]

<?php 
$x = 10.365;
var_dump($x);
echo "<br>"; 
$x = 2.4e3;
var_dump($x);
echo "<br>"; 
$x = 8E-5;
var_dump($x);
?>   

Return:
  float(10.365) 
  float(2400) 
  float(8.0E-5)
[Array]

<?php $cars=array("Volvo","BMW","Toyota"); var_dump($cars); ?>
# 注意,箭头函数? 这里只是个key-value array(3) { [0]=> string(5) "Volvo" [1]=> string(3) "BMW" [2]=> string(6) "Toyota" }
[Object]

<?php class Car { var $color; function __construct($color="green") { $this->color = $color; } function what_color() { return $this->color; } }

-----------------------------------------------------
function print_vars($obj) { foreach (get_object_vars($obj) as $prop => $val) {  // --> 之后再细讲 echo "\t$prop = $val\n"; } } // 实例一个对象 $herbie = new Car("white"); // 显示 herbie 属性 echo "\therbie: Properties\n"; print_vars($herbie); ?>

 

 

三、字符串

完整的 PHP String 参考手册

PHP 并置运算符 echo $txt1 . " " . $txt2; 
strlen() 函数 echo strlen("Hello world!"); 
strpos() 函数 echo strpos("Hello world!","world"); 

 

 

四、运算符

PHP 算术运算符

(1) x % y 比较 intdiv(10, 3)

PHP 赋值运算符

(1) a .= b

PHP 递增/递减运算符

 

PHP 比较运算符

(1) x === y 对比 5==="5" return false ,  (2) x <> y 等同 x != y 对比 x !== y

PHP 逻辑运算符

(1) $a || $b AND $c || $d 相当于 ($a || $b) AND ($c || $d)
PHP 数组运算符 (1) $x = array("a" => "red", "b" => "green"); 
PHP 三元运算符  
组合比较符 (PHP7+)  
运算符优先级  
   

 

 

五、条件语句

  • if 语句 - 在条件成立时执行代码
  • if...else 语句 - 在条件成立时执行一块代码,条件不成立时执行另一块代码
  • if...elseif....else 语句 - 在若干条件之一成立时执行一个代码块
  • switch 语句 - 在若干条件之一成立时执行一个代码块

 

  

六、数组与循环

  • 定义
<?php
$cars=array("Volvo","BMW","Toyota");
echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
?>
  • 求长度
echo count($cars);
  • 遍历
<?php
$cars=array("Volvo","BMW","Toyota");
$arrlength=count($cars);
 
for($x=0; $x<$arrlength; $x++)
{
    echo $cars[$x];
    echo "<br>";
}
?>
  • 关联数组
<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
echo "Peter is " . $age['Peter'] . " years old.";
?>
  • 关联数组 de 遍历
<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
 
/**
* 有点把age拆分开的意思
*/
foreach($age as $x=>$x_value) { echo "Key=" . $x . ", Value=" . $x_value; echo "<br>"; } ?>

 

  • 多维数组 - 不同类型组合在一起
<pre> 
<?php 
// 二维数组: 
$cars = array 
( 
    array("Volvo",100,96), 
    array("BMW",60,59), 
    array("Toyota",110,100) 
); 
print_r($cars); 
?> 
</pre> 

输出:

Array
(
    [0] => Array
        (
            [0] => Volvo
            [1] => 100
            [2] => 96
        )

    [1] => Array
        (
            [0] => BMW
            [1] => 60
            [2] => 59
        )

    [2] => Array
        (
            [0] => Toyota
            [1] => 110
            [2] => 100
        )
)

 

  • 多维数组 - 自定义分配 ID 键
<?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>"); 
?>

输出: 

 

  • while 循环
  • for 循环

  • foreach 循环
<?php
$x=array("one","two","three");
foreach ($x as $value)
{
    echo $value . "<br>";
}
?>

 

 

七、数组的排序

sort() sort($cars); $cars=array("Volvo","BMW","Toyota");
rsort() rsort($cars);  
asort() asort($age); $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
ksort() ksort($age);  
aksort() arsort($age);  
krsort() krsort($age);  

举个例子:冒泡算法

<?php
// 从大到小排序 $numArray = array(3,2,6,5,8,10); $numCount = count($numArray);
for($i=$numCount-1; $i>=0; $i--) { for($j=0; $j<$i; $j++) { if($numArray[$j]< $numArray[$j+1]) { $aa = $numArray[$j+1]; $numArray[$j+1]=$numArray[$j]; $numArray[$j]=$aa; } } } print_r($numArray); ?>

 

 

八、函数

在 PHP 中,提供了超过 1000 个内建的函数。例如其中的 PHP 参考手册

<?php
function writeName()
{
    echo "Kai Jim Refsnes";
}
 
echo "My name is ";
writeName();
?>

 

  • 参数传递

通常,函数获取参数的方式是值传递

引用传递:参数名前加一个地址符(&)。

 

  

下一篇见:命名空间和类 

 

posted @ 2018-06-27 17:04  郝壹贰叁  阅读(337)  评论(0编辑  收藏  举报