• 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的模板实现步骤还有待我进一步学习)

  • 相关阅读:
    pat甲级1013
    二分查找
    pat甲级1012
    win10 + Ubuntu16.04双系统安装
    win10 U盘重装
    win10蓝牙添加设备无法连接
    Android自定义控件总结
    11.粘性控件
    10.侧拉删除
    9.视差特效、回弹动画、overScrollBy
  • 原文地址:https://www.cnblogs.com/red-code/p/5288650.html
Copyright © 2020-2023  润新知