全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

php类自动装载、链式操作、魔术方法实现代码

1、自动装载实例

目录下有3个文件:index.php load.php tests文件夹

tests文件夹里有 test1.php

<?php
namespace Tests;
class Test1{
  static function test(){
    echo __CLASS__.'<br>';
    echo __FILE__.'<br>';
  }
}

index.php内容

<?php
include "load.php";
Tests\Test1::test();

load.php内容

<?php
class Loader
{
  static function loadClass($class)
  {
    $class =  __DIR__.DIRECTORY_SEPARATOR.str_replace('\\','/',$class).'.php';
    if (file_exists($class)) {
      include $class;
      return;
    }
  }
}
spl_autoload_register(array('Loader','loadClass'));

2、php 链式操作

namespace Baobab;

class Database{
 function where($where){
  return $this;
 }
 
 function order($order) {
  return $this;
 }
 
 function limit($limit){
  return $this;
 }
}

?>

//index.php
$db = new Baobab\Database();
$db->where('id = 1')->order('order by id')->limit(1);

3、魔术方法:

__get/__set:接管对象属性。在给不可访问属性赋值时,

__set() 会被调用;读取不可访问属性的值时,__get() 会被调用。

__call/__callStatic:在对象中调用一个不可访问方法时,__call() 会被调用;用静态方式中调用一个不可访问方法时,__callStatic() 会被调用。

__toString:一个类转化成字符串

__invoke:以调用函数的方式调用一个对象时,__invoke() 方法会被自动调用。

<?php
namespace Baobab;

class Object{
 protected $array = array();
 function __set($key, $value){
  $this->array[$key] = $value;
 }
 function __get($key){
  //echo __METHOD__;
  return $this->array[$key];
 }
 
 function __call($func, $param){
  //var_dump($func,$param);
  return 'magic function';
 }
 
 static function __callstatic($func, $param) {
  //var_dump($func, $param);
  return 'magic static function';
 }
 
 function __toString(){
  return __CLASS__;
 }
 
 function __invoke($param) {
  return var_dump($param);
 }
 
}
$obj = new baobab\Object();
$obj->title = 'hello';
echo $obj->title;
echo $obj->test1('hello', 123);
echo $obj::test1('hello1', 1234);
echo $obj;
echo $obj('test1');

以上就是php中自动装载、链式操作、魔术的实现代码,需要的朋友可以参考一下。


# 自动装载  # 链式操作  # 魔术方法  # PHP 预定义变量、魔术常量和魔术方法功能与用法小结  # PHP面向对象程序设计之对象克隆clone和魔术方法__clone()用法分析  # 基于PHP的加载类操作以及其他两种魔术方法的应用实例  # PHP魔术方法之__call与__callStatic使用方法  # PHP之十六个魔术方法详细介绍  # PHP的重载使用魔术方法代码实例详解  # 链式  # 在对  # 转化成  # 象中  # 法会  # 文件夹里  # 目录下  # echo  # function  # test  # br  # loadClass  # DIRECTORY_SEPARATOR  # Loader  # gt  # str_replace  # include  # pre  # class  # tests 


相关文章: 定制建站哪家更专业可靠?推荐榜单揭晓  如何在VPS电脑上快速搭建网站?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  如何生成腾讯云建站专用兑换码?  开源网站制作软件,开源网站什么意思?  如何快速搭建高效简练网站?  建站之星伪静态规则如何设置?  宁波自助建站系统如何快速打造专业企业网站?  广平建站公司哪家专业可靠?如何选择?  重庆市网站制作公司,重庆招聘网站哪个好?  Android自定义listview布局实现上拉加载下拉刷新功能  简历在线制作网站免费,免费下载个人简历的网站是哪些?  百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?  家庭建站与云服务器建站,如何选择更优?  C#怎么创建控制台应用 C# Console App项目创建方法  如何用低价快速搭建高质量网站?  建站之星如何实现PC+手机+微信网站五合一建站?  建站之星安装步骤有哪些常见问题?  如何在Golang中指定模块版本_使用go.mod控制版本号  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  如何快速搭建高效香港服务器网站?  C++时间戳转换成日期时间的步骤和示例代码  娃派WAP自助建站:免费模板+移动优化,快速打造专业网站  如何通过建站之星自助学习解决操作问题?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  制作营销网站公司,淘特是干什么用的?  如何通过免费商城建站系统源码自定义网站主题与功能?  Python如何创建带属性的XML节点  建站之星如何开启自定义404页面避免用户流失?  香港服务器租用费用高吗?如何避免常见误区?  微课制作网站有哪些,微课网怎么进?  安云自助建站系统如何快速提升SEO排名?  建站之星与建站宝盒如何选择最佳方案?  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?  如何通过西部建站助手安装IIS服务器?  免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?  建站三合一如何选?哪家性价比更高?  如何在Windows虚拟主机上快速搭建网站?  高端企业智能建站程序:SEO优化与响应式模板定制开发  如何快速搭建高效WAP手机网站吸引移动用户?  c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  小建面朝正北,A点实际方位是否存在偏差?  大型企业网站制作流程,做网站需要注册公司吗?  详解jQuery停止动画——stop()方法的使用  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  如何彻底卸载建站之星软件?  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  模具网站制作流程,如何找模具客户? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。