超级文本预处理语言: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();
?>
  • 参数传递

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

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

下一篇见:命名空间和类

[PHP] 01 - Hypertext Preprocessor的更多相关文章

  1. [Code::Blocks] Install wxWidgets & openCV

    The open source, cross platform, free C++ IDE. Code::Blocks is a free C++ IDE built to meet the most ...

  2. 本人SW知识体系导航 - Programming menu

    将感悟心得记于此,重启程序员模式. js, py, c++, java, php 融汇之全栈系列 [Full-stack] 快速上手开发 - React [Full-stack] 状态管理技巧 - R ...

  3. php从入门到放弃系列-01.php环境的搭建

    php从入门到放弃系列-01.php环境的搭建 一.为什么要学习php 1.php语言适用于中小型网站的快速开发: 2.并且有非常成熟的开源框架,例如yii,thinkphp等: 3.几乎全部的CMS ...

  4. 01Hypertext Preprocessor

    Hypertext Preprocessor PHP即Hypertext Preprocessor是一种被广泛使用的开放源代码多用途动态交互性站点的强有力的服务器端脚本语言尤其适用于 Web开发人员可 ...

  5. 超全的web开发工具和资源

    首页 新闻 产品 地图 动态 城市 帮助 论坛 关于 登录 注册 · 不忘初心,继续前进,环境云V2接口正式上线 · 环境云测点地图全新改版 · 祝福各位环境云用户中秋快乐!   平台信息 培训互动 ...

  6. 你知道吗?Web的26项基本概念和技术

    这是我在网上看到一篇不错的文章,拿出来与大家分享一下:希望有所帮助 作者: 小鱼  来源: 前端里  发布时间: 2014-08-01 22:56  阅读: 10477 次  推荐: 51   原文链 ...

  7. .NET软件工程师面试总结

    1.手写画出系统架构图,系统代码架构,有什么技术难点?  2.手写画出系统部署图 CDN(一般购买别人的服务器会自动CDN,他们自己配置就OK啦) 3.asp.net 的session怎么实现会话共享 ...

  8. Web的26项基本概念和技术

    ---恢复内容开始--- Web开发是比较费神的,需要掌握很多很多的东西,特别是从事前端开发的朋友,需要通十行才行.今天,本文向初学者介绍一些Web开发中的基本概念和用到的技术,从A到Z总共26项,每 ...

  9. JavaEE面试题库

    Java EE软件工程师 认证考试 面试题大全 目  录 第一部分  HTML/CSS/JavaScript 1 1.              HTML含义和版本变化... 1 2.         ...

随机推荐

  1. 零基础学习hadoop到上手工作线路指导初级篇:hive及mapreduce(转)

    零基础学习hadoop到上手工作线路指导初级篇:hive及mapreduce:http://www.aboutyun.com/thread-7567-1-1.html mapreduce学习目录总结 ...

  2. Windows远程桌面,连接被拒绝,因为没有授权此用户帐户进行远程登录。

    Windows 服务器远程连接的时候,出现错误:“连接被拒绝,因为没有授权此用户帐户进行远程登录.”,导致无法远程登录服务器,如下图所示: 问题分析 该错误一般是由于 Windows 远程桌面相关权限 ...

  3. Tomcat增加虚拟内存(转)

    程序要遍历读取xml并写入数据库,需要占用大量内存 如果数据量大则报错 Exception in thread "Timer-0" java.lang.OutOfMemoryErr ...

  4. AndroidStudio下加入百度地图的使用(四)——路线规划

    上一章中我们已经完成了API常用的方法及常量属性的使用,这一章向大家介绍一下地图的重要功能-路线规划. (1) 定义API中的路线查询类: RoutePlanSearch mSearch = Rout ...

  5. Java在Service层异常封装

    dao层不需要抛出异常,应该在service层抛出异常,可以是自定义的异常,也可以包装异常,然后在controller中定义exception handler统一处理或者单独处理. 参考: https ...

  6. PC高级语言与施耐德、罗克韦尔、台达等PLC的Modbus通讯源代码(ModbusTCP.DLL/ModbusRTU.DLL)

    1.0  通讯组件概述 该类通讯组件适用于基于PC高级语言的工业自动化控制系统,用于PC与可编程控制器(PLC).智能仪表等进行数据通讯.组件采用动态链接库文件(*.DLL)的形式,在PC系统的项目工 ...

  7. VMware: Non-VI workload detected on the datastore

    check ref: Unmanaged I/O workload detected on shared datastore running Storage I/O Control (SIOC) fo ...

  8. 数据库连接池优化配置(druid,dbcp,c3p0)

    主要描述了数据库连接池参数配置的准则,针对常用的数据库连接池(c3p0,dbcp,druid)给出推荐的配置. 考虑因素 1:当前连接DB的规模   2:并发情况 3:执行db的响应时间 配置考虑 1 ...

  9. 【PMP】项目浮动的三种时间

    自由浮动时间 不影响后续工作最早可以开始时间的前提下,这项工作可以拖延的时间叫做自由浮动时间. 总浮动时间 不影响项目总工期的情况下活动可以拖延的总时间. 项目浮动时间 在已经排好的总工期的基础上,领 ...

  10. C++ 获取程序编译时间

    一个简单的需求,就是需要程序判断当前系统的时间是不是在程序编译之后的,如果系统当前时间在编译之前,那说明这台机器的时间是不正确的,需要终止程序运行. 因为要在程序编译时候获取时间,如果每次编译前手动修 ...