php函数和数据代码实例讲解
1.js中的面向对象
说明:
顺序:代码主句执行,逻辑从上到下顺序排列。
选择:代码执行过程中,允许分支语句对要执行的内容进行判断,从而决定程序执行走向。
循环:面对大量重复执行的过程,采用循环语句实现。
<!doctype html>
<html>
<head lang='en'>
<meta charset='utf-8'>
<title></title>
</head>
<body>
<script >
function peo('peoname',peogender ){
this.peat = function(){
console.log('我喜欢吃苹果');
}
this.pname=peoname;
this.pgender=peogender;
}
var leo = new peo('小明','male');
console.log(leo);
leo.peat();
var liushishi=new peo('刘诗诗','famale');
console.log(liushishi);
</script>
</body>
</html>
2.js中的面向对象特征 公有 私有
(1) 公有 和方法能够直接被对象访问调用;
私有 和方法只能够在对象内部访问;对象外部无法直接调用。
(2) js 中模拟了公有私有的概念
公有:在构造函数中通过this .添加的属性和方法均为模拟出的公有属性和公有方法。
私有:在构造函数中没有通过this。添加的局部变量和内部函数,来模拟出私有属性和私有方法。
(3)特权函数:
通过公有的方法来操作私有内容,这样的公有方法就成为特权函数。
特权函数一般分为两种:getter方法用来获取私有值,setter方法用来设置私有值。
面向对象的私有特征:封装 继承 多态
封装:构建能解决问题的类,并通过类生成解决问题的对象。
给类添加公有属性和方法,在通过new 实例化对象。
<!doctype html>
<html>
<head lang='en'>
<meta charset='utf-8'>
<title></title>
</head>
<body>
<script >
function father(tempname, tempage){
this. fname=tempname;
this.fage=tempage;
var xiaojinku='200元';
//特权函数
this.xiaojinku = function(temp){
xiaojinku=temp;
};
this.xiaojinku=function(){
retsum xiaojinku;
};
}
var xiaoming =new father('小明','45');
console.log(xiaoming);
console.log(xiaoming.fname, xiaoming.fage);
xiaoming.xiaojinku ('300元');
console.log(xiaoming.xiaojinku());
//原型prototype原型是加给类的 构造函数。
function peo(peoname,peoage){
this.pname=peoname;
this.page=peoage;
peo.prototype.peyesnum=2;
peo.prototype.pbreathe=function(){
console.log('人一出生就会呼吸');
}
var lilei = new peo('李雷’,'16');
var hanmeimei= new peo('韩梅梅'.'15');
console.log(lilei);
console.log(hanmeimei);
lilei . pbreathe();
hanmeimei. pbreathe();
</script>
</body>
</html>
3.继承
a. 原型 链式继承(用处最广,最简单,但是弊端多的方式)
子类的原型=父类的实例。
b.构造继承 :通过call和apply 函数进行继承(解决了第一种继承的问题,但是出现了新的问题)
c.组合继承: 把前两种组合在一起,解决了上述两种的问题,但出现了第三种新问题
d.寄生继承:完美(缺点:麻烦)
<!doctype html>
<html>
<head lang='en'>
<meta charset='utf-8'>
<title>js中继承</title>
</head>
<body>
<script >
function father(fatherhouse){
this. fhouse=fatherhouse;
var xiaojinku ='200元';
}
father.prototype.money= '很多';
var mayun= new father('100平米的房子');
function son(){
//子类的原型=父类的实例;
son.prototype=mayun ;
var lilei=new son();
console.log(lilei);
console. log(lilei.fhouse);
console.log(lilei.money);
console.log(lilei.xiaojinku);
</script>
</body>
</html>
4.php函数
函数的声明语法由function命令声明,
函数参数写在小括号内部,
函数返回值在函数内部采用return关键词声明,
函数可以先使用后声明
函数内部返回的函数(闭包)
php中的作用域也采用函数级别,因此函数内部的变量无法在函数外部直接访问。
在函数外部定义的全局变量并不能在函数内直接使用
而是通过关键词global在函数内部再次声明才可以。
在php 的函数中如果想要使用哪怕是全部变量,也必须采用关键词global
声明一次否则无法生效。
<?php
$num=12;
functiong func(){
global$num;
echo$num;
$num++;
}
func() ;
echo '$num';//13
?>
5.php 类和对象
(1)php 中的类
语法:class 类名{类内部的结构}
一个类可以包含有属于自己的常量,变量【属性】以及函数【即方法】。
(2)对象
描述:php中对象只能通过实例化得到
类似js中直接编辑“对象”的操作,在php中不能实现
实例=new类名;
(3)属性类型的关键字
描述:public、protected、private.
pubulic: 被定义为公有的类成员可以在任何地方被访问。
protected:被定义为受保护的类成员则可以被其自身以及其子类和父类访问。
private:被定义为私有的类成员则只能北汽定义所在的类访问。
在类的成员方法中,可以->来访问非静态属性,其中->称为对象运算符。
<?php
class peo{
public $peoname = ‘people name’;
function showself(){
echo 'hello world!';
}
}
$lili = new peo;//peo object ( [peoname] => people name )
print_r($lili);
// (4)class 类名{
const 类常量(开头没有$)=简单值;
static 静态变量名(开头有$)=简单值;
}
const不能发生改变
static 仅在类被声明的时候执行一次,但可以修改
两者的调用方式都用双冒号 : : 调用。
两者在调用的时候均可不实例化对象直接通过类名调用。
class car{
const cartype='bentian';
static $carleader=' leo';
public $fdj='发动机’;
private function ability(){
echo '跑';
}
public function carrun(){
$this->ability();
}
}
echo car : :$carleader;
car: : $carleader ='leo's dad';
echo car : : $carleader;
$mycar =new car() ;
echo car: : $carleader;
echo car: : cartype;
$mycar =new= car();
echo $mycar: :carrtype;
echo$mycar->fdj;
$mycar->carrun();
?>
(5) php 中类的构造函数
class 类名{
function 类名(){ 主动修改的代码}
<?php
class peo{
public $peoname;
function_construct(){
$this->peiname='默认值';
}
$leo =new peo();
echo $leo->peoname;
?>
(6)类中的继承
继承是指子类会继承父类所有公有的和受保护的属性方法。
在php 中使用 extends 关键词来实现继承。
语法: class sonclassname extends fatherclassname{
子类结构
}
对于公有属性和方法的继承,子类可以直接随意使用
对于受保护的属性和方法的继承,可以在父类或子类内部使用
对于私有的属性和方法,子类不能够继承。
<?php
class father{
public$pubpro='父类公开属性';
protectde$protecpro='父类的受保护属性';
private$pripro='父类私有属性';
public function fatherpublicput(){
echo$this->pubpro.'<br/>';
echo$this->protecpro.'<br/>';
echo $this->pripro."<br/>";}
protected function fatherprotectput(){
echo $this->pubpro."<br/>";
echo $this->protecpro."<br/>";
echo $this->pripro."<br/>";}
private function fatherprivateput(){
echo $this->pubpro."<br/>";
echo $this->protecpro."<br/>";
echo $this->pripro."<br/>";
}
}
$father=newfather();
echo$father->pubpro;//对
echo$father->protecpro;//错
echo$father->pripro;//错
$father->fatherpublicput();//对
$father->fatherprotectput();// 错
$father->fatherprivateput(); //错
$son = new son();
echo $son->pubpro;//对
echo $son->protecpro;//错
echo $son->pripro;//错
$son->fatherpublicput();//对
$son->fatherprotectput();//错
$son->fatherprivateput();//错
// 父类公开的属性、父类受保护的属性、报错
(证明继承的属性只有public 和protected的属性)
?>
cookic指的是当访问页面时,由后边发往前台页面数据时所夹带的一小段信息。
当后台返回给前台数据的时候,添加的一段“持久”的信息。
因此这段信息必须在php后台代码中插入添加。
<!doctype html>
<html>
<head lang='en'>
<meta charset='utf-8'>
<title>登录页面</title>
<script type="text/javascript" src='jquery-3.0.0.js'></script>
</head>
<body>
<button>登录按钮</button>
<p>获取cookie</p>
<script type="text/javascript">
//ajax 请求 asynchronos js and xml
var arr= document.cookic.split('=');
var obj={};
obj[arr[0]] = arr[1];
if(obj.user info! ='frank+add'){
alert('您还没登录,赶紧登陆去吧;);
}else{
alert('您已经登陆过了,请尽情浏览吧');
}
var username = 'frank';
var password = '123456';
$('p').click(function(){
console.log(document.cookie);
var arr = document.cookie.split('=');
console.log(arr);
var obj = {};
obj[arr[0]] = arr[1];
console.log(obj);
console.log(obj.userinfo);
});
$('button').click(funtion(){
$.ajax({
type:'post',
url:'https://127.0.01/day1/code/lesson4_cookie.php',
data:{
uname:username,
upass:password
} ,
jsontyoe:'json',
success:function(data){
console.log(data);
}
});
});
</script>
</body>
</html>
?php
//echo 命令在php中代表输出
//但是如果是请求中,代表返回数据
$username = $_post['uname'];
$password = $_post['upass'];
if($username=='frank' && $password=='123456'){
//给前台添加一个cookie
setcookie('userinfo', 'frank add', time()+2000);
echo "登录成功";
}else{
echo "登录失败";
}
?>
整体操作数据库顺序
1.建立连接
2.判断是否连接
3.设置编码
4.创建sql语句
5.执行sql语句,并获得结果
6.判断结果条数
7.拼凑结果
8.json化返回
<?php
$con = mysqli_connect('localhost','root','','firstdb');
mysqli_query($con,"set names utf8");
mysqli_query($con,"set character_set_client=utf8");
mysqli_query($con,"set character_set_results=utf8");
$sql = "select * from stuinfoform where 1";
$result = $con->query($sql);
if($result->num_rows>0){
$jsoninfo=[];
for($i=0;$row=$result->fetch_assoc();$i++){
$jsoninfo[$i] = $row;
}
print_r($jsoninfo);
}
?>
下一篇: Asp.net 一般处理程序+扩展