//定义数组
$arrayName = array('0' => '🍎','1' => '🍌');
//打印数组
echo $arrayName[0];
复制代码
// 设置utf8的报头
header( 'Content-Type:text/html;charset=utf-8 ');
// 接受get请求
$username = $_GET['username'];
//post请求
$username = $_POST['username'];
//什么请求均可以检测到
$username = $_REQUEST['username'];
复制代码
//设置报头
header("Content-type:text/html;charset=utf-8");
//定义连接的一些参数
$servername = "localhost";
//username默认是root
$username = "root";
$password = "";
//库名
$dbname = "PHPlesson";
// 建立链接
$conn = mysqli_connect($servername, $username, $password, $dbname);
// 检测链接,若是连接失败,就抛出错误
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
//定义sql语句,添加信息
$sql = "INSERT INTO `news`(`news`, `newsimg`, `addtime`) VALUES ('news11','哈哈','2019-10-11')";
if (mysqli_query($conn, $sql)) {
echo "新记录插入成功";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
//关闭连接
mysqli_close($conn);
复制代码
class Person{
//公共属性
public $age;
//公共方法
public function say($word){
echo 'she say {$word}';
}
public function info(){
//调用方法,这里能够把 ->理解为js里面的点
$this -> say('hi');
return $this -> age;
}
}
$xiaohong = new Person();
$xiaohong -> age = 22;
$age = $xiaohong -> info();
echo "123";
echo $age;//22
复制代码
<?php
class person{
//固定写法,相似于js里面的constructor
public function __construct($name,$age){
//new 的时候自动执行的
$this -> name = $name;
$this -> age = $age;
}
public function data(){
return $this -> age;
}
//析构--->代码执行完毕后指执行的函数
public function __destruct(){
echo $this -> data();
//用途:进行资源的释放,数据库的关闭,代码执行完毕,
echo "bye bye {$this -> name}";
echo "<hr/>";
//bye bye tory
}
}
new person('tory',30);
new person('red',320);
?>
复制代码
<?php
/* 当试图获取一个私有变量时,类会自动调用__get。 一样的,当试图设置一个私有变量时,类会自动调用__set。 */
class person{
//共有的
public $name = "zjx";
// 私有的
private $age = '21';
//受保护的
protected $money = '30';
//私有成员方法不能在类的外部访问
private function getName(){
return $this -> name;
}
protected function getMoney(){
return $this -> money;
}
public function userCard(){
echo $this -> name.$this -> getName().'存款'.$this -> getMoney();
}
public function __set($name,$value){
//$name:变量名,$value:变量值
//魔术方法的set只针对保护,私有变量
echo $name.$value.'</br>';
if ($name == 'age' && $value == '100') {
echo 'zjx 100';
}
}
public function __get($key){
//$key:变量名
echo 'ok'.$key.'ok';
}
}
$xw = new person();
//没有set的时候是不能在外边操做私有变量的
$xw -> age = "100";
echo $xw -> userCard();
echo $xw -> age;
//isset() — 检测变量是否设置。
unset($name);//干掉某个变量
?>
复制代码
/*PHP只支持单继承,不容许多重继承。一个子类只能有一个父类,不容许一个类直接继承多个类,但一个类能够被多个类继承。 能够有多层继承,即一个类能够继承某一个类的子类,如类B 继承了类A,类C又继承了类B,那么类C也间接继承了类A,*/
class A{
....
}
class B extends A{
....
}
class C extends B{
....
}
复制代码
<?php
/** * 父类 */
class person {
public $name = 'zjx';
private $age = '10';//私有的属性没法继承
protected $money = '100';//受保护的外部没法访问,可是能够继承过去
function __construct($name,$age,$money){
$this -> name = $name;
$this -> age = $age;
$this -> money = $money;
}
public function cardinfo(){
echo $this -> name.'->'.$this -> age.'->'.$this -> money;
}
}
/** * yellow继承person */
class yellow extends person {
function __construct($name,$age,$money) {
//使用父类的构造函数,若是不写这个的话就会覆盖父类的构造函数
parent::__construct($name,$age,$money);
}
public function cardinfo($pp){
//借用父类的cardinfo方法
parent::cardinfo();
echo $pp;
}
}
$s = new yellow('xiaom','1','20');
$s -> cardinfo(11);
?>
复制代码
使用接口(interface),能够指定某个类必须实现哪些方法,但不须要定义这些方法的具体内容。php
接口是经过 interface 关键字来定义的,就像定义一个标准的类同样,但其中定义全部的方法都是空的。html
接口中定义的全部方法都必须是公有,这是接口的特性。mysql
何时用接口?sql
一、定规范,保持统一性;数据库
二、多个平级的类须要去实现一样的方法,只是实现方式不同数组
接口使用规范bash
实例:less
<?php
//接口声明的关键字是interface
//接口中的方法都是抽象方法,不也使用abstract去手动的定义
interface usb{
const brand = 'siemens'; // 接口的属性必须是常量
public function connect(); // 接口的方法必须是public【默认public】,且不能有函数体
}
// new usb(); // 接口不能实例化
// 类实现接口
class Android implements usb{
public function connect(){ // 类必须实现接口的全部方法
echo '实现接口的connect方法';
}
}
interface usbA{
public function connect();
}
interface usbB{
public function contact();
}
// 类能够同时实现多个接口
class mi implements usbA,usbB{
public function connect(){
}
public function contact(){
}
}
?>
复制代码
程序中,有些类的做用只是用来继承,无须实例化;ide
为了知足类的这种需求,php提供了抽象类的概念 ,关键词abstract;函数
抽象类原则:
<?php
abstract class Animal{
public $name = 'animal';
// 有抽象方法的类必定是抽象类;类必需要abstract修饰
// 抽象方法不能有函数体
abstract function cry();
public function getName(){
echo '个人名字';
}
}
// new Animal(); // 报错,抽象类不能被实例化
class Dog extends Animal {
// 非抽象子类继承抽象类,子类必须实现父类的全部抽象方法
public function cry(){
}
}
$dog = new Dog();
$dog->getName(); //抽象类中的非抽象方法能够调用
abstract class Cat extends Animal{
// 抽象子类继承抽象类,无需继承父类的抽象方法
}
?>
复制代码
1、引入php文件路径的方法
require '文件路径'; require ('文件路径');
require_once '文件路径'; require_once ('文件路径');
include 同 require
include_once 同 require_once
2、include和require的区别
复制代码
推荐使用require_once方法引入文件
在讲解这三大特性前,咱们先讲访问修饰符。
php中有3中访问修饰符:public protected private;
public:表示公有的;可在本类、子类、对象实例中访问。
protected:表示受保护的;可在本类、子类中访问;不能在对象实例中访问。
private:表示私有的;可在本类中访问;不能在子类、对象实例中访问。
1、封装性
封装就是把抽取出来的数据和对数据的操做封装在一块儿,数据被保护在内部,程序的其余部分只有被受权的操做(方法)才能对数据进行操做。
class Student{
public $name;
protected $age;
private $play;
public function __construct($name, $age){
echo '我是Student类';
$this->name = $name;
$this->age = $age;
}
}
$student = new Student('moon', 18);
复制代码
2、继承性
当多个类有不少共同属性和方法时,代码冗余;这时,咱们能够将共有部分提取出来,封装成一个类;子类通过一些操做可使用这个共有的父类,这个就叫继承。
语法结构:
class 父类名{}
class 子类名 extends 父类名{}
继承要素:
class Student{
public $name;
protected $age;
private $play;
public function __construct($name, $age){
echo '我是Student类';
$this->name = $name;
$this->age = $age;
}
}
// Pupil类继承Student类
class Pupil extends Student {
public function testing(){
echo '我是Pupil';
}
public function __construct($name, $age){
parent::__construct($name, $age); // 调用父类的构造方法1
// Student::__construct($name, $age); // 调用父类的构造方法2
echo $this->name;
echo $this->age;
// echo $this->play; // 报错,父类private定义的属性不能被子类继承
}
}
new Pupil('sky', 18);
// 实现类的多层继承
class A{
public $name='AAA';
}
class B extends A{
public $age=30;
}
class C extends B{}
$p = new C();
echo $p->name; // 这里会输出AAA
复制代码
3、多态性
class Student{
public $name;
protected $age;
private $play;
public function getPlay(){
echo '我是Student';
}
}
// Pupil类继承Student类
class Pupil extends Student {
public function __construct(){
parent::getPlay(); // 能够这样调用父类的方法
}
public function getPlay(){
echo '我是Pupil';
}
}
$p1 = new Pupil(); // 我是Student
$p1->getPlay(); // 我是Pupil
复制代码
扩展:
方法重载(overload)
基本概念:函数名相同,但参数的个数或参数的类型不一样,达到调用同一个函数,能够区分不一样的函数
在PHP5中虽然也支持重载,可是和其它语言仍是有很大区别的,php中不能定义多个同名函数
PHP5中提供了强大的“魔术”函数,使用这些魔术函数,咱们能够作到函数重载
这里咱们要到到 __call,当一个对象调一个方法时,而该方法不存在,则程序会自动调用__call