PHP代码,能详细解释一下每行的意思么?多谢了

2024-11-08 08:59:57
推荐回答(2个)
回答1:

php中类操作有几个关键字,$this, self, static, parent

$this很好区别,就是实例化后的对象,所以不能在静态方法里调用

class testA{
    public $name="name";
    public static function test() {
        //出错! static方法不能使用this
        echo $this->name;
    }
}

self, static, parent  都是静态调用,后跟 ::  如果是变量,要加$

class testA{
    //属性也要定义成静态的,不然也是访问不了的
    public static $name="name";
    
    public $mobile="";
    
    public static function test() {
        //可以访问
        echo static::$name;
        
        //不可访问
        echo static::$mobile
    }
}

下面说一下三者区别

self  指代当前定义方法所在的类

static  后期静态绑定的类 ( 实际调用中是哪个类,就代表哪个类,不一定是方法定义所在的类 )

parent 这个也好区别,就是当前定义类的父类

class A {
    public static function who() {
        echo __CLASS__;
    }
    public static function test() {
        static::who(); // 后期静态绑定从这里开始
    }
}

class B extends A {
    public static function who() {
        echo __CLASS__;
    }
}

B::test();

以上代码,输出   B

因为最后调用是从B 这个类调用的

class A {
    public static function who() {
        echo __CLASS__;
    }
    public static function test() {
        self::who();
    }
}

class B extends A {
    public static function who() {
        echo __CLASS__;
    }
}

B::test();

以上代码,输出 A

因为调用who时指定了当前类,不管最终从哪里调用,都会调用到A里定义的方法

另外 ,这三个关键字可跟在new 后面,来实例化代表的类,就不用重复写类名,方便维护。

参考:php:后期静态绑定

学php可以多看看官方手册

下面我再简单解释下你发的代码。

你这个应该是thinkphp的model吧,init静态方法是model的初始化方法,是一个静态方法,主要用于勾子处理(事件绑定)。这个调用可以从thinkphp的model类中找到。

一般在定义方法时需要覆盖父类方法,都会调用一下  parent::method() 用于先执行父类的方法,除非特意屏蔽父类初始方法就不调用。

回答2:

var lottery={
index:-1,
count:0,
.........
init:function(id){

},
roll:function(){

}
};
简单,就是对整个页面的初始化。
再详细一点说,就是这样的写法是最近几年开始流行的json写法,把所有的function,所有的变量等,都用
var o = {
x: func,
y: "",
z: obj
}
这样的写法来写。而调用直接用o.x ;o.z()即可


之前项目的一段代码:
require([contextPath + '/js/assets/common.js'], function (common) {
require(['jquery', 'bootstrap', 'easyuiUtil','jqueryForm','layer'], function ($, bootstrap,
easyuiUtil,jqueryForm,layer) {
Namespace('taskinfo.taskinfoList', {
init: function () {//加载列数据
easyui.util.initDatagrid('#datagrid', {
url: contextPath + '/taskinfo/query',
columns:[[
{field:'name',title:'任务名称',width:120},
{field:'cron',title:'执行周期',width:80},
{field:'taskBeanId',title:'任务执行类名',width:80},
{field:'status',title:'状态',width:80,formatter: function(value,row,index){
if ('1'==value){
return "启用";
} else {
return "禁用";
}
}
},
{field:'createTime',title:'创建时间',width:80},
{field:'remarks',title:'备注',width:120}
]],
onDblClickRow: function (index,row) {
taskinfo.taskinfoList.editPage()
}

});
},
addPage: function () {
window.top.tempvalues = {};
var addwindow = window.top.layer.open({
type: 2,
area: ['1000px', '90%'],
skin: 'layui-layer-demo DB-style', //加上边框
title: '

添加任务
',
shadeClose: false,
content: contextPath + '/taskinfo/add',
});
window.top.tempvalues.callback = function(){
$("#datagrid").datagrid("reload");
window.top.layer.close(addwindow);
}
},
editPage: function () {
window.top.tempvalues = {};
var selected = $("#datagrid").datagrid("getSelected");
if(selected!=null){
var ewindow = window.top.layer.open({
type: 2,
area: ['1000px', '90%'],
skin: 'layui-layer-demo DB-style', //加上边框
title: '
添加任务
',
shadeClose: false,
content: contextPath + '/taskinfo/update/'+selected.id,
});
window.top.tempvalues.callback = function(){
$("#datagrid").datagrid("reload");
window.top.layer.close(ewindow);
}
}else{
layer.msg('请选择一个任务!');
}
},

changeStatus: function () {
var selected = $("#datagrid").datagrid("getSelected");
if(selected!=null){
$.post(contextPath + '/taskinfo/changeStatus/'+selected.id,
function (result) {
if (result.code == 200) {
$('#datagrid').datagrid('reload');
}
layer.msg(result.message);
}, 'json');
}else{
layer.msg('请选择一个任务!');
}
},
deleteTaskinfo: function () {
var selected = $("#datagrid").datagrid("getSelected");
if(selected!=null){
$.messager.confirm('信息提示', '确定要删除吗?', function (sure) {
if (!sure)
return;
$.post(contextPath + '/taskinfo/delete/'+selected.id,
function (result) {
if (result.code == 200) {
top.showInfo('删除成功!');
$('#datagrid').datagrid('reload');
} else {
top.showInfo('删除失败!');
}
}, 'json');
});
}else{
layer.msg('请选择一个任务!');
}
}
});
$(function () {
$("div.table-scrollable").heigh?gl.guwen.top#document.body).height()-140);
$(window).resize(function() {
$("div.table-scrollable").heigh?gl.guwen.top#document.body).height()-140);
});
taskinfo.taskinfoList.init();
});
});