一、文件载入

  文件载入:将目标文件的代码载入到当前的位置上,有时候也叫流程控制。

  文件载入的目的是实现网站的分层设计,因为不同的页面可能有很多相同的区域(相同的代码),这些相同的代码只需要写一次,有需要的时候载入进来即可,提高代码的重用,提高效率。

  载入的文件不管是什么类型,实际上载入的是文件里面的代码,跟文件是什么类型无关。载入的代码,除了php代码可以执行,其他的脚本也可以执行。

  include、require、include-once、require-once

  include‘目标文件地址’  //相对于当前文件而言

  include-once在载入的时候会进行检查,如果文件载入过,就不再载入

  include与require对载入文件的依赖程度不同,include载入失败,产生一个warning级别的错误,后续的代码会继续执行;require载入失败,error,后续代码不再执行。

    载入原理:

  1、当执行到include的时候,先退出php模式,进入到html模式

  2、载入目标文件的源代码

  3、编译并执行

  4、再次进入PHP模式

二、载入路径

  相对路径:../  ./  /默认的是网站的根目录  前面不写(表示默认路径,可以在php配置文件php.ini中的include_path设置)

  绝对路径:不管当前文件在哪里打开,都能引入目标文件中的代码,缺点是可移植性差。

  为了提高绝对路径的文件的可移植性,我们可以:

    1、先定义跟目录常量,魔术常量

  由于linux操作系统下的目录分隔符只支持正斜杠/,为了兼容,要把上面的路径中的反斜杠变成正斜杠,这个时候,需要使用一个系统函数str_replace来替换:

  define(”ROOT_DIR”,str_replace(‘\\’ , ’/’, __DIR__) . ’/’);

    2、再定义其他目录常量

  define(”INC_DIR” , ROOT_DIR . ‘includes/’);

    3、加载文件

  include  INC_DIR . ‘文件名’;

三、终止脚本执行

  一般来说,函数内终止用exit,函数外用die

  测试代码时用的比较多:

    1、  检查错误,逐步排错

    2、  看中间代码的输出结果,提前终止脚本执行

    3、业务逻辑需要,比如,密码错误。连接失败等

  脚本延迟执行:sleep(秒数)

    sleep最常用在代码的测试阶段,利用sleep来查看当前中间代码以及执行效果

    sleep后面的秒数一般不会超过30秒,因为php默认的脚本周期就是30秒!php.ini中配置max_execution_time = 30

四、函数初步

  函数必须先声明再调用,但书写代码时可以先调用再声明,因为脚本在执行前会进行一次预编译,预编译后函数的定义代码已经放置在内存的用户代码区了。

  函数名遵守基本的标识符的命名规则,但函数名不区分大小写,一般用小驼峰法来表示!(注明:习惯上以后的类名用大驼峰法,因为类名也不区分大小写)。

  形式参数parameter、实际参数argument

    参数的传递默认是值传递,也可以引用传递,即在形参的前面加上求地址运算符&,这是实参传递给形参的是地址,实参此时必须是变量,变量才有引用传递。

    可以给形参赋值一个默认值

  不确定参数

    由于参数个数不确定,所以一个也不定义

    func_get_args( )      接收传递的所有实参,得到一个索引数组,通过下标来访问,从而对其进行运算

    count( )    得到数组元素的个数

    func_get_arg( )        获得某个参数的值,括号里面为该参数的下标

    func_num_args()     获得实参的个数

五、变量的作用域

  超全局变量、全局变量、局部变量

  1,  PHP中的全局和局部作用域是完全不重叠的,也就是相互之间不能访问!

  2,  每个函数也都有自己的局部作用域,函数之间的变量也无法互相访问!

  超全局变量:

    1、用户每定义一个全局变量,自动会在超全局变量数组中添加一个元素

    2、通过超全局变量的下标,可以在任意位置访问到其值$GLOBALS[‘key’]=$value,反之,增加$GLOBALS的元素,也可以创建一个超全局变量。

    此时,超全局变量与全局变量是“同生共死”的关系!删除、修改是同步的!

  global

    将全局变量的地址复制一份,生成了一个新的同名的局部变量(引用传递)

    删除global声明的变量,不影响全局变量。

    使用超全局变量$GLOBALS还是global,视情况而定,为避免对业务逻辑造成影响,尽量使用$GLOBALS("同生共死")

  静态局部变量static

    所谓的静态局部变量,是指该变量不会随着函数执行的结束而消失,而是,只要这个函数还在(在内存),该变量就一直存在!

    最大特点:每次调用该函数后,其中的静态局部变量都会被保存下来而不会消失(下次调用该函数的时候可以接着使用)!

    在循环语句中,静态局部变量static初始化只会执行一次,不会随着循环的进行而重新初始化!

六、递归调用和迭代思想

  (以后会拿出来单独详细分析)

  语法上,所谓的函数的递归调用,就是函数在执行的时候自动调用自己。一个最典型的:遍历目录!

  函数的递归有两个要素:

    1,  递归出口:就是什么时候停止自己调用自己

    2,  递归点:就是什么时候开始自己调用自己

  迭代就是从前往后来解决问题,体现在代码上,其实就是一个步骤的重复的执行,也就是循环结构。

PHP初步(中)的更多相关文章

  1. Link Cut Tree 总结

    Link-Cut-Tree Tags:数据结构 ##更好阅读体验:https://www.zybuluo.com/xzyxzy/note/1027479 一.概述 \(LCT\),动态树的一种,又可以 ...

  2. Python开源框架

    info:更多Django信息url:https://www.oschina.net/p/djangodetail: Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC) ...

  3. C#中对string与string[]的初步操作

    开篇之作,简单的对string与string[]进行初步操作,入门篇也,不多说,直接上代码. using System; using System.Collections.Generic; using ...

  4. iOS多线程的初步研究(五)-- 如何让NSURLConnection在子线程中运行

    可以有两个办法让NSURLConnection在子线程中运行,即将NSURLConnection加入到run loop或者NSOperationQueue中去运行. 前面提到可以将NSTimer手动加 ...

  5. JavaScript 中的面向对象的初步认识

    我在学习JS的面向对象编程的时候,总是有两个奇怪的问题. 第一个就是:面向对象在JS中很少用到... 可能是目前自己做的项目还是比较简单,前端方面的任务我几乎都是用面向过程的方式写的,所以就导致,我啃 ...

  6. HBase写的初步测试中的表现

    底 第四年HBase.在上线的机HBase集群做一个初步的测试写入性能.下面具体说明做测试内容. 说明 HBase周围环境 0.96版本号,8台region server.默认配置 写数据说明 单co ...

  7. 初步探究java中程序退出、GC垃圾回收时,socket tcp连接的行为

    初步探究java中程序退出.GC垃圾回收时,socket tcp连接的行为 今天在项目开发中需要用到socket tcp连接相关(作为tcp客户端),在思考中发觉需要理清socket主动.被动关闭时发 ...

  8. php框架中的phalcon框架的安装,及初步认识,从表单提交简单的数据到数据库中

    php框架中的phalcon框架的安装,及初步认识,从表单提交简单的数据到数据库中 1.phalcon框架的安装: phalcon框架在windows本地安装可以利用wamp软件,安装之后可以查看对应 ...

  9. 非常易于理解‘类'与'对象’ 间 属性 引用关系,暨《Python 中的引用和类属性的初步理解》读后感

    关键字:名称,名称空间,引用,指针,指针类型的指针(即指向指针的指针) 我读完后的理解总结: 1. 我们知道,python中的变量的赋值操作,变量其实就是一个名称name,赋值就是将name引用到一个 ...

随机推荐

  1. VMWare虚拟机设置固定ip上网方法

    转自:http://blog.csdn.net/cyberrusher/article/details/7269795 1. 在VMWare工具栏中打开:编辑--->虚拟机网络编辑器, 打开VM ...

  2. SYSTick 定时器

        CM3 内核的处理器,内部包含了一个 SysTick 定时器,(SysTick 的时钟源自 HCLK 的 8 分频,8个系统时钟周期systick跳一个,即8*1/72M=1/9 us)Sys ...

  3. footer绝对定位但是不在页面最下边解决方案

    方案一 html { height: 100%; } body { position: relative; min-height: 100%; box-sizing: border-box; padd ...

  4. Nginx基础知识之————RTMP模块中的中HLS专题(翻译文档)

    一.在Nginx配置文件的RTMP模块中配置hls hls_key_path /tmp/hlskeys; 提示错误信息: nginx: [emerg] the same path name " ...

  5. 推荐相关学习 & 典型算法、典型特征、典型推荐系统框架

    总的来说,信息爆炸,产生了信息过载.解决的方法主要有两类:检索和推荐.检索是主动的有目的的.意图明确,推荐是非主动的.意图不明确. 推荐方面最经典的,就是协同过滤推荐了.我博客这里有两篇,一篇偏理论, ...

  6. Deep Learning 22:总结一些deep learning的基本知识

    1.交叉熵代价函数 2.正则化方法:L1和L2 regularization.数据集扩增.dropout 3. 数据预处理 4.机器学习算法中如何选取超参数:学习速率.正则项系数.minibatch ...

  7. Could not create the view: An unexpected exception was thrown.

    今天打开Myeclipse10的时候,发现server窗口出现一堆问题,问题如标题,然后下方出现了一堆java.lang.NullPointerException的问题. java.lang.Null ...

  8. 剔除eclipse的configuration目录[转]

    欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...

  9. log4net RemotingAppender 的配置

    Before you even start trying any of the alternatives provided, ask yourself whether you really need ...

  10. php curl用法

    curl 是使用URL语法的传送文件工具,支持FTP.FTPS.HTTP HTPPS SCP SFTP TFTP TELNET DICT FILE和LDAP.curl 支持SSL证书.HTTP POS ...