php中webobj,PHP : 面向对象、与Web交互

1. PHP 面向对象

1.1 与 C++区别

实例化:

声明对象时, 不用类名, 直接声明对象名

$a = new A(...);

this-> 或 对象名-> 后面的变量不用 $

每个成员前用 public protected private,像 java 一样

构造函数

void __construct([mixed args [, ...] ])

析构函数

void __destruct(void)

PHP 有 垃圾回收 机制, 自动清理 不再使用的对象,释放内存。一般不需要手动创建析构函数

继承

parent : 父类类名

self : 本类类名

class subClass extends superClass

{

...

};

多态

C++中虚 virtual 函数,到 PHP 中是用 抽象 abstract 函数

默认为 public 属性

1.2 作用域操作符 ::

class subClass extends superClass

{

const NAME = "subClass";

function __const()

{

parent::__construct();

echo self::NAME;

}

};

1.3 常用关键字等

static

静态成员 不用实例化对象, 类第1次加载时 就已分配了内存空间

final

修饰类时,该类不能再被继承

修饰函数时,该函数 不能被重写,不能被覆盖

关键字 abstract

抽象类 不能被实例化,至少有一个抽象方法

抽象方法 没有方法体, 其功能只能在子类中完成

用关键字 abstract 修饰

abstract class AbstractClass

{

...

};

abstract function abstractFun();

interface & implements

PHP 中只支持单继承,要想实现多继承,就要用接口类

接口类 用 interface声明, 类中方法都未实现

interface InterfaceClass

{

function f1();

}

子类 通过 implements 实现接口

class subClass implements InterfaceClass1, InterfaceClass2

{

function f1()

{

//功能实现

}

...

};

1.4 常用方法

对象类型 检测 : instanceof

objName instanceof ClassName

__set() __get()

通过对象 调用/写入 一个未定义 或 不可见(非 public, 即 protected private)的成员变量时,实际隐含地通过 __get() / __set() 方法 调用/写入

note: 通过对象 可以 看似直接调 protected/private 成员变量, 实际是 隐含间接通过 _get() / __set() 调

class A

{

public function __get($name)

{

...

}

public function __set($name, $value)

{

...

}

};

__call() : 2个参数,方法名 & 参数

通过对象 调用 一个未定义 或 不可见(非 public, 即 protected private)的成员方法时,实际隐含地通过 __call() 方法 调用

_toString() : 无参数

使用 echo 或 print 输出对象时(后面直接跟对象,不要加多余字符),实际是调 __toString() 把对象转化为字符串

class A

{

private $name = "TC";

public function __toString()

{

return $this->name;

}

};

$obj = new A;

echo $obj;

?>

__autoload()

require() include() 函数 可以在 php文件中 引入单个 特定 类文件

__autoload($className) 可以自动 引入 某个类对应的同名类文件

require('A.php');

$a = new A();

?>

A.php

class A

{

private $val;

public function __construct($val1)

{

$this->val = $val1;

}

public function __toString()

{

return $this->val;

}

};

?>

test.php

function __autoload($className)

{

$classPath = $className.".php";

if(file_exists($classPath))

include_once($classPath);

}

$a = new A("super");

echo $a;

?>

2. 与 Web 交互

PHP 与 Web 页面2种交互?

通过 Web 表单提交数据; 同 URL 参数传递

2.1 HTTP 协议

HTTP, HyperText Transfer Protocol 超文本传输协议, 是互联网上广泛使用的一种网络协议, 所有 WWW 文件都遵守该协议。

HTTP 是 客户端 和 服务器端 请求和应答的标准协议。

客户端:Web 浏览器

服务器端:网站

客户端发起1个指定端口(默认80)的 HTTP 请求, 服务器给出应答

2.2 Web 工作原理

浏览器 发 网址, 如 www.baidu.com,给 DNS服务器

DNS服务器 把 域名 解析为 IP地址,回给 浏览器

浏览器 通过 IP地址 找到对应的 Web服务器(通常是 Apache或Nginx), 发 HTTP Request 包给 Web服务器

Web 服务器 发现用户访问了后缀为 .php 的文件, 会 请求 PHP解析引擎来解析

PHP解析引擎 解析时,发现需要用的数据库,向数据库服务器请求数据

数据库服务器 返回 请求的数据

PHP 解析成 HTML.,返回给 Web 服务器

Web服务器 把 HTML 文件返回给 浏览器

9f65fc4dd178

image.png

2.3 HTML 表单

2.3.1 HTML

HTML Hyper Text Markup Language 超文本标记语言,是一种标记语言,而不是一种编程语言

标记语言 是一套 标记标签,通常是 HTML 标签:由 <> 包围的关键词,通常成对出现

新建 HTML文件的新建:新建 .txt 文件,编码格式改为 UTF-8(notePad->编码 -> 使用UTF-8编码), 改成 .html

2.3.2 HTML 表单 : 实现 浏览器与服务器交互

为实现 浏览器与服务器的互动,可使用 HTML表单 获取用户输入

HTML 表单 形式:用户注册、登录、个人中心设置

1. 创建 表单:

标签

...

form标签的属性

name // 表单名称

method // 表单提交方式:GET 或 POST

action

enctype //表单内容编码方式

target //返回信息的显示方式

GET : 将表单内容附加在 URL 地址后发送

POST : 将表单中信息作为一个数据块发送到服务器

2. 表单元素

(1)输入域标签

type:

text

password

submit

file

image

radio

checkbox

reset

button

hidden

//eg:

(2)选择域标签

选项1

选项2

//eg:

计算机

软件工程

(3)文字域标签

...文本内容

2.3 CSS 美化表单页面

CSS 是一种标记语言, 用于为 HTML文档定义布局,涉及字体、颜色、边距、背景等

行内样式表

style 属性

hello

花木兰

内部样式表

在 HTML 文件内 用

h1 {color: blue}

p{background: yellow}

hello

花木兰

2.4 PHP获取表单数据

提交 表单

把表单 从 客户端 提交到 服务器, 本节只讲 POST 和 GET方法。

...

获取 POST方式提交的表单

POST方式:

(1)不依赖于 URL,不会显示在地址栏

(2)可以没有限制地传递数据到服务器, 所有提交的信息在后台传输

(3)适合发送 保密的 或者 数据量大的数据

$email = $_POST['email'];

$password = $_POST['password'];

array = $_POST;

print_r($_POST);

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值