php随笔(一)
之前的开发一直用的都是Thinkphp框架,对原生的php很不了解,近日打算把以前的项目拿一个出来用原生php再重写一次,顺便再把TP框架拆开好好分析分析。
之前的android开发虽说对面向对象的思想有一定的理解,但这几天从php的角度去理解面向对象感觉又深入了不少。
写一些比较杂的随笔笔记。
1、
php中面向对象和面向过程的区别:
面向过程:根据你的业务需要,建立"不同的方法"来满足你的需求,在需要时调用方法即可
如:function eat(){}//建立“吃”的方法
需要用到吃的过程时需要调用 eat()方法,当你需要其他过程时调用其他方法
面向对象:首先你得有一个类,这是建立对象的图纸,当你需要“吃”这个动作时,你需要先找到吃这个动作的对象,因为在面向对象里“所有的动作都被封在对象里”。
如:class People{
public name; //属性
function eat(){}//方法
}
之后需要eat方法时应先创建people对象,再调用其内部的方法(或属性)
即:$demo = new People; //当有类构造函数时,需要写成$demo = new People();
$demo ->name; //对象->属性(属性前没有$)
$demo ->eat(); //对象->方法
2、
php中的构造方法与析构方法
构造函数:
__construct
析构函数:(当对象被销毁时自动调用,销毁对象的方法:unset(对象名))
__destruct
3、函数内方问全局变量(全局变量在逻辑上不属于类或对象)
class demo{
public funtion function_demo(){
$GLOBALS['count']++; //在类的函数内部调用全局变量。
}
}
$count = 0; //这是全局变量
$object_demo = new demo;
4、静态成员(静态成员在逻辑上属于类)
类中一般的属性(如:class{ public $number=1;})只有在被实例化为对象时才会出现在对象内部。每实例化一次对象都会重新被创建。
在普通的属性前加一个static就变成了静态的(如:class{ public static $number=1;}),类中的静态成员则是所有对象“共享”的。即:“若某一对象对该静态成员进行了修改,则会修改原类的该静态成员。”
访问静态成员的方法:类名::$成员名
总结:一个类中的属性或方法是随着对象的产生才会产生的,所以类中的属性或方法在逻辑上是属于对象的,而类中的静态成员是属于类的。
$this:表示当前对象,$this后面跟->
self:表示当前类(只有在类内才可以使用,类外用类名),self(或类名)后跟::
5、类常量
在类内定义,“属于类的常量”,使用const声明
即:const NUMBER = 1;
类常量没有修饰符(public之类)
访问类常量:
类名::类常量名 //访问类中的静态变量是有$的,而访问类常量则没有$
6、总结
类中能直接写的只有五种语法:声明属性、声明静态属性、声明类常量、方法、静态方法
而类似于“echo、dump、$this->”等不能写在类“直属下”,只能写在类中的方法里
7、
框架有感(thinkphp):
1、为了能够将php与html分开,引入模板的概念
我们的所有网页的打开,都不是直接运行的html文件,而是运行的php中所对应的各个方法。
整个过程分为三个步骤:1、模板(html页面)的获取。2、对模板中的字符串进行替换。3、输出模板
以thinkphp框架为例:
其中控制器的名字要和html页面的名称一样,这应该是为了获取和输出同名模板
而display则是对模板内的字符串进行替换
如:
public function brand_model(){
$table_brand=M('brand');
$result=$table_brand->where()->field('id,name,img,number')->select();
$this->assign('brand',$result);
$this->display();
}
其中assign类似于声明了$result数组的键值名为brand(作用是为了在html页面找到所要替换的相应位置),而display则可能是将该方法的同名html页面中的规定的字符串通过键值名‘brand’替换成了$result,之后再输出
(目前这只是我的现有猜测,具体thiinkphp的模板实现步骤还有待我进一步学习)
php随笔(一)的更多相关文章
- AI人工智能系列随笔
初探 AI人工智能系列随笔:syntaxnet 初探(1)
- 【置顶】CoreCLR系列随笔
CoreCLR配置系列 在Windows上编译和调试CoreCLR GC探索系列 C++随笔:.NET CoreCLR之GC探索(1) C++随笔:.NET CoreCLR之GC探索(2) C++随笔 ...
- C++随笔:.NET CoreCLR之GC探索(4)
今天继续来 带大家讲解CoreCLR之GC,首先我们继续看这个GCSample,这篇文章是上一篇文章的继续,如果有不清楚的,还请翻到我写的上一篇随笔.下面我们继续: // Initialize fre ...
- C++随笔:从Hello World 探秘CoreCLR的内部(1)
紧接着上次的问题,上次的问题其实很简单,就是HelloWorld.exe运行失败,而本文的目的,就是成功调试HelloWorld这个控制台应用程序. 通过我的寻找,其实是一个名为TryRun的文件出了 ...
- ASP.NET MVC 系列随笔汇总[未完待续……]
ASP.NET MVC 系列随笔汇总[未完待续……] 为了方便大家浏览所以整理一下,有的系列篇幅中不是很全面以后会慢慢的补全的. 学前篇之: ASP.NET MVC学前篇之扩展方法.链式编程 ASP. ...
- 使用Beautiful Soup编写一个爬虫 系列随笔汇总
这几篇博文只是为了记录学习Beautiful Soup的过程,不仅方便自己以后查看,也许能帮到同样在学习这个技术的朋友.通过学习Beautiful Soup基础知识 完成了一个简单的爬虫服务:从all ...
- 利用Python进行数据分析 基础系列随笔汇总
一共 15 篇随笔,主要是为了记录数据分析过程中的一些小 demo,分享给其他需要的网友,更为了方便以后自己查看,15 篇随笔,每篇内容基本都是以一句说明加一段代码的方式, 保持简单小巧,看起来也清晰 ...
- 《高性能javascript》 领悟随笔之-------DOM编程篇(二)
<高性能javascript> 领悟随笔之-------DOM编程篇二 序:在javaSctipt中,ECMASCRIPT规定了它的语法,BOM实现了页面与浏览器的交互,而DOM则承载着整 ...
- 《高性能javascript》 领悟随笔之-------DOM编程篇
<高性能javascript> 领悟随笔之-------DOM编程篇一 序:在javaSctipt中,ECMASCRIPT规定了它的语法,BOM实现了页面与浏览器的交互,而DOM则承载着整 ...
- css随笔1
1.简单清除浏览器样式 *{ padding: 0px; margin: 0px; } 2.得到屏幕范围的div html,body{ width: 1 ...
随机推荐
- 利用canvas实现抽奖转盘---转载别人的
功能需求 转盘要美观,转动效果流畅. 转盘上需要显示奖品图片,并且奖品是后台读取的照片和名字. 转动动画完成后要有相应提示. 获取的奖品具体算法在数据库里操作,前端只提供最后的效果展示. 知识要点 ...
- Python与Hack之Unix口令
1.在实验时候,先导入crypt库:必须在Unix环境下才能实现这个模块 2.代码贴一下,以后有了Unix环境试试吧: import cryptimport syssys.modules['Crypt ...
- npm 模块常用命令
mocha mocha --compilers js:babel/register : 在babel模式下测试,默认查找test文件夹,注意此时全局不要安装babel; ./node_modules/ ...
- Scau 8633 回文划分 mancher + dp
时间限制:1000MS 内存限制:1000K 提交次数: 通过次数: 题型: 编程题 语言: G++;GCC Description 我们说一个字符串是回文串,那么意味着这个串从两边读起来的字母都是一 ...
- SqlServer 事务回滚(1)
SQL事务 一.事务概念 事务是一种机制.是一种操作序列,它包含了一组数据库操作命令,这组命令要么全部执行,要么全部不执行.因此事务是一个不可分割的工作逻辑单元.在数据库系统上执行并发操作 ...
- Python连接Oracle
http://wenku.baidu.com/link?url=2yVoHbJ3XTnZdbyOkN923ncGPqXygJiB6wSRBkqlqimR6H8XxWpBT6GxCTFgmALyqGH0 ...
- 【Oracle】配置oracle数据库最大连接数
数据库中教你如何修改ORACLE最大连接数 Oracle的连接数相关参数:processes.sessions. Oracle的sessions是个派生值,由processes的值决定,session ...
- 【原】iOS中KVC和KVO的区别
在iOS开发中经常会看到KVC和KVO这两个概念,比较可能混淆,特地区分一下 KVC(Key Value Coding) 1> 概述 KVC:Key Value Coding,键值编码,是一种间 ...
- BZOJ3092 : [FDU2012校赛] A Famous King’s Trip
题目等价于去掉两条边,使得剩下的图连通,且所有点度数都为偶数. 首先特判掉图一开始就不连通的情况. 求出dfs生成树,对于每条非树边随机一个权值,每条树边的权值为所有经过它的非树边权值的异或和. 那么 ...
- node.js 调用天气webservice接口
首先安装soap模块 npm install soap 1 2 3 4 5 6 7 8 9 10 var soap = require('soap'); var url = 'http://w ...