zoukankan      html  css  js  c++  java
  • PHP初步(中)

    一、文件载入

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

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

      载入的文件不管是什么类型,实际上载入的是文件里面的代码,跟文件是什么类型无关。载入的代码,除了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,  递归点:就是什么时候开始自己调用自己

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

  • 相关阅读:
    Java面向对象之继承
    ios Block解决循环引用和回传值
    iOS 计算label的高度
    十六进制的颜色
    App调SDK时加判断
    vmware中clone后的工作
    关于python保留几位小数,不进行四舍五入的方法
    git 绑定github
    opensuse ./filezilla: error while loading shared libraries: libpng12.so.0: cannot open shared object file: No such file or directory
    关于opensuse开机登录背景修改后,不生效的问题
  • 原文地址:https://www.cnblogs.com/Hansen32/p/6100120.html
Copyright © 2011-2022 走看看