zoukankan      html  css  js  c++  java
  • 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的模板实现步骤还有待我进一步学习)

  • 相关阅读:
    atitit.nfc 身份证 银行卡 芯片卡 解决方案 attilax总结
    atitit.php 流行框架 前三甲为:Laravel、Phalcon、Symfony2 attilax 总结
    Atitit.执行cmd 命令行 php
    Atitit. 图像处理jpg图片的压缩 清理垃圾图片 java版本
    atitit。企业组织与软件工程的策略 战略 趋势 原则 attilax 大总结
    atitit. 管理哲学 大毁灭 如何防止企业的自我毁灭
    Atitit.java的浏览器插件技术 Applet japplet attilax总结
    Atitit.jquery 版本新特性attilax总结
    Atitit. 软件开发中的管理哲学一个伟大的事业必然是过程导向为主 过程导向 vs 结果导向
    (转)获取手机的IMEI号
  • 原文地址:https://www.cnblogs.com/red-code/p/5288650.html
Copyright © 2011-2022 走看看