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>
<div>获取cookie</div>
<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';
$('div').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:'http://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);
}
?>
php函数和数据
最新推荐文章于 2024-04-13 22:32:03 发布