PHP快速入门-基础语法及面向对象

简介: PHP快速入门-基础语法及面向对象

配置sublime

{
    "cmd": ["php", "$file"],
    "file_regex": "php$",
    "selector": "source.php"
}

代码实例

<?php  
echo "hello world"
# 单行注释
// 单行注释
/*
    多行注释
*/
?>

基础语法

<?php 
// 八种数据类型: 整型 浮点型 布尔值 空 字符串 数组 对象 资源
// PHP所有变量有一个美元符号($)
// 变量赋值
$name = "Tom";
echo $name;
// 变量赋值多行内容
$detail = "\nthis is first line
this is second line\n";
echo $detail;
// 全局变量
$a = 20;
function global_func(){
    // print($a);  // Undefined variable
    global $a;  // 访问全局变量
    print($a);  // 20
    $GLOBALS['a'] += 30;  // 修改全局变量
    echo "\n";
}
global_func();
print($a);  // 50
echo "\n";
// 静态变量
function static_func(){
    static $a = 1;
    echo "a=";
    echo $a;
    echo "\n";
    $a += 1;
}
static_func();  // a=1
static_func();  // a=2
static_func();  // a=3
// 常量定义
define("MAX", 20);
// 常量访问
print MAX;  // 20
print "\n";
print(constant("MAX"));  // 20
print "\n";
// PHP比较运算符 == ===(值和类型都相同) <> !=   !==(值不同或类型不同)
?>
<?php 
// 结构控制
if (1 < 2){
    print("1<2");
}
else{
    print("1>=2");
}
print "\n";
// 1<2
// 循环类型
// 有4种方式:for、while、do...while、foreach,前面3种和C语言中类似
for($i=1; $i<=3; $i++){
    print($i);
    print "\n";
}
// 1 2 3 
$i = 1;
while ($i<=3) {
    print $i;
    print " ";
    $i++;
}
print "\n";
// 1 2 3
do{
    print $i;
    print " ";
    $i--;
} while($i>0);
print "\n";
// 4 3 2 1
// 遍历数组, 指针移动
$list = array(1, 2, 3, 4, 5);
foreach ($list as $value) {
    print "value = $value ";
}
print "\n";
// value = 1 value = 2 value = 3 value = 4 value = 5 
// 数组 3种
// 数字数组
$numbers = array(1, 2, 3, 4, 5);
foreach ($numbers as $value) {
    print("$value ");
}
print "\n";
// 1 2 3 4 5
// 修改数组元素
$numbers[0] = "one";
$numbers[1] = "two";
$numbers[2] = "three";
foreach ($numbers as $value) {
    print("$value ");
}
print "\n";
// one two three 4 5
// 新建数组
$names[0] = 1;
$names[2] = 2;
foreach ($names as $value) {
    print("$value ");
}
print "\n";
// 1 2 
// 获取数组长度
$length = count($numbers);
for($i=0; $i<$length; $i++){
    print($numbers[$i]);
    print(" ");
}
print "\n";
// one two three 4 5 
// 关联数组 PHP 5.5.36, 相当于python的字典
$people = ["Tom"=>"20", "Jack"=>"30", "Jimi"=>"40"];
// 访问数组元素
print($people["Tom"]);
print(" ");
print($people["Jack"]);
print(" ");
print($people["Jimi"]);
print("\n");
// 20 30 40
// 修改数组元素
$people["Tom"] = 50;
$people["Jack"] = 60;
$people["Jimi"] = 70;
// 遍历数组元素
foreach ($people as $key => $value) {
    print("$key=>$value\n");
}
print("\n");
// Tom=>50
// Jack=>60
// Jimi=>70
// 多维数组
$cars = array(
    "first" => [
        "name" => "car1", 
        "color" => "white"
    ],
    "second" => [
        "name" => "car2",
        "color" => "black"
    ]);
// 访问多维数组元素
print($cars["first"]["name"]);  # car1
print("\n");
// PHP数组排序函数
/*
sort() - 对数组进行升序排列
rsort() - 对数组进行降序排列
asort() - 根据关联数组的值,对数组进行升序排列
ksort() - 根据关联数组的键,对数组进行升序排列
arsort() - 根据关联数组的值,对数组进行降序排列
krsort() - 根据关联数组的键,对数组进行降序排列
*/
// 字符串
// 双引号串 中的内容可以被解释而且替换
// 单引号串 中的内容总被认为是普通字符
// 字符串并置运算符(.):把两个变量连接在一起
$a = "hello";
$b = "world";
print($a . " " . $b);  // hello world
print("\n");
// 计算字符串的长度
$c = "中国";
print(strlen($a));  // 5
print(strlen($c));  // 6
// 查找字符串
print(strpos($a, "ll")); // 2
print(strpos($a, "xx")); // FALSE
print("\n");
// 函数
// $a普通参数, &$b引用参数, $c默认参数 
function func_args($a, &$b, $c=2){
    $a += 1;
    $b += 1;
    $c += 1;
    print("a=$a b=$b c=$c\n"); // a=2 b=2 c=3
    return $a;  // 返回值
}
$args_a = 1;
$args_b = 1;
$ret = func_args($args_a, $args_b);
print("ret=$ret\n");  // ret=2
print("args_a=$args_a args_b=$args_b\n");
// args_a=1 args_b=2
?>

面向对象

<?php 
// 继承 PHP不支持多继承
/*
访问控制
public(公有):公有的类成员可以在任何地方被访问。
protected(受保护):受保护的类成员则可以被其自身以及其子类和父类访问。
private(私有):私有的类成员则只能被其定义所在的类访问。
*/
// 类属性必须定义为公有,受保护,私有之一, 默认为公有, var 定义,则被视为公有
// Final 关键字
// 方法被声明为 final,则子类无法覆盖该方法。
// 如果一个类被声明为 final,则不能被继承。
class Father{
    public $name = "Tom";
    protected $age = 40;
    private $address = "北京";
    function print_info(){
        print("public name: " . $this->name . "\n");
        print("protected age: " . $this->age . "\n");
        print("private address: " . $this->address . "\n");
    }
    final function work(){
        print("龙生龙,凤生凤,老鼠生儿会打洞\n");
    }
}
// 子类继承父类
class Child extends Father{
    protected $age = 20;  // 重写父类的protected属性
    function print_info(){
        print("public name: " . $this->name . "\n");
        print("protected age: " . $this->age . "\n");
        // print("private address: " . $this->address . "\n"); // Undefined property
    }
    // function work(){
    //     print("子类不要父类的工作\n");
    // }  
    // Cannot override final method
}
$father = new Father();
$father->print_info();
/*
public name: Tom
protected age: 40
private address: 北京
*/
$child = new Child();
$child->print_info();
/*
public name: Tom
protected age: 20
*/
// 构造函数和析构函数
class People{
    function __construct($name){
        $this->name = $name;
        print("父类构造函数 " . $this->name);
    }
    function __destruct(){
        print("父类析构函数");
    }
}
class Human extends People{
    function __construct($name){
        parent::__construct($name);  // 调用父类的构造方法
        print("子类构造函数 " . $this->name);
    }
}
$people = new People("老王");
print("\n");
/*
父类构造函数 老王
父类析构函数
*/
$human = new Human("小王");
print("\n");
// 父类构造函数 小王子类构造函数 小王 父类析构函数
// 接口
// 指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容
// 接口中定义的所有方法都必须是公有,这是接口的特性
// 类可以实现多个接口
interface ISleep{
    public function sleep($time);
}
interface IEat{
    public function eat();
}
// 实现多接口
class Dog implements ISleep, IEat{
    public function sleep($time){
        print("sleep... time: $time\n");
    }
    public function eat(){
        print("eating ...\n");
    }
}
$dog = new Dog();
$dog->sleep(5);
$dog->eat();
/*
sleep... time: 5
eating ...
*/
// 抽象类
// 任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。
// 定义为抽象的类不能被实例化。
// 继承一个抽象类的时候,子类必须定义父类中的所有抽象方法
abstract class AbsBase{
    // 抽象方法
    abstract public function sleep();
    // 普通方法
    public function eat(){
        print("eat...\n");
    }
}
class Cat extends AbsBase{
    public function sleep(){
        print("cat sleep...\n");
    }
}
class Pig extends AbsBase{
    public function sleep(){
        print("pig sleep...\n");
    }
}
// $abs = new AbsBase(); // Cannot instantiate abstract class
$cat = new Cat();
$cat->eat();  // eat...
$cat->sleep();  // cat sleep...
$pig = new Pig();
$pig->eat();  // eat...
$pig->sleep();  // pig sleep...
// 静态属性 static
// 不实例化类而直接访问
class Foo{
    public static $name = "static name";
    public function get_name(){
        print(self::$name);  // 用一个变量来动态调用类的静态属性
        print("\n");
    }
}
print(Foo::$name);  // static name  // 通过类直接调用静态属性
$foo = new Foo();
$foo->get_name();  // static name
?>
相关文章
|
1月前
|
SQL 关系型数据库 PHP
PHP基础语法
PHP基础语法
12 0
|
2月前
|
JSON JavaScript Java
【PHP】英文博客专栏PHP快速入门个人笔记
【PHP】英文博客专栏PHP快速入门个人笔记
119 1
|
9月前
|
程序员 PHP
PHP快速入门12-异常处理,自定义异常、抛出异常、断言异常等示例
PHP的异常处理机制可以帮助我们在程序运行时遇到错误或异常情况时,及时发出警告并停止程序继续运行。下面是10个例子,分别展示了PHP异常处理的不同用法。
|
6月前
|
PHP
PHP基础语法(下)
本篇博客将会带你继续探索PHP语言的基础语法。本篇内容主要聚焦于PHP的流程控制语句和文件包含语句,掌握这些重要的语法结构将使您能够更好地控制程序流程,并且在开发过程中能够高效地组织和管理代码。
69 2
|
6月前
|
存储 PHP 容器
PHP基础语法(上)
PHP在当今世界仍然是一门流行和重要的服务器端脚本语言。它具有广泛的应用领域、强大的生态系统和不断发展的特点,为Web开发提供了可靠和灵活的解决方案。
63 8
|
7月前
|
XML 前端开发 JavaScript
PHP 语法入门
PHP 语法入门
19 0
|
8月前
|
PHP
php基础语法
php基础语法
37 2
|
8月前
|
数据处理 PHP
PHP面向对象和面向过程的区别
PHP面向对象和面向过程的区别
46 0
|
9月前
|
PHP 索引
PHP快速入门15-收藏,常见的50多个高频数组函数使用总结
PHP快速入门与实战,关于本篇文章介绍的内容,Composer包管理,后续更多内容将收录在专栏PHP快速入门与实战。收藏,常见的50多个PHP高频数组函数使用总结。
|
9月前
|
缓存 Linux PHP
PHP快速入门14-Composer包管理安装与使用,附常见的20个使用例子
PHP Composer 是 PHP 的一个包管理工具,它被广泛用于 PHP 应用程序的依赖管理。Composer 可以自动查找和下载 PHP 应用所需要的第三方类库和组件,并将它们集成到应用程序中。
199 0