可实现统计该数据库中每个表的记录数,一个字

2019-07-13 作者:编程   |   浏览(70)

这篇文章详细的对php中的常用魔术方法进行了整理归纳,分享给大家供大家参考,具体内容如下

本文实例讲述了PHP MySQL统计该库中每个表的记录数并按递减顺序排列的方法。分享给大家供大家参考,具体如下:

图片 1

先给大家炫下效果图,如果大家觉得还很满意,请继续往下阅读:

1、PHP把所有”__”开头的方法当做魔术方法,所以任何自定义的方法都不能是”__”开头
php提供的重载,是指动态的创建属性或方法。重载是通过魔术方法来实现的。这些魔术方法的参数不能饮用传递,__get(),__set(),__isset(),__unset(),实现类属性重载。
2、当访问类中不可访问的属性时,将调用__get()方法
3、当访问类中不可访问的属性时,根据不同的情况会调用__get(),__set(),__isset(),__unset(),其中当访问属性 时,使用函数isset()或empty()时,将调用__isset()方法使用unset()函数时,将调用__unset()方法。
4、这四个方法不能使用static关键词定义,在php5.3.0后,一个warning级别的警告将发生,当使用static方法定义这4个方法。
5、何谓不可访问的属性:(1)类中没有的属性,(2)私有变量在类外被访问。方法重载,通过__call()和__callstatic()来实 现,两者的区别是一个上下文环境是否是静态方法,后者在调用不可访问的静态方法时会被调用。__callstatic()是在php5.3.0中才被添 加。
6、__sleep()和__wakeup()
serialize()序列化时,会先检查是否存在__sleep()函数,如果存在,则先调用__sleep(),返回一个包含所有变量名称的数组,如果该方法不返回任何内容,则null被序列化,并产生一个notice级别的错误。
__wakeup()方法和__sleep()相反,在调用unserialize()时被调用
7、__toString(),让一个类决定它如何转换成字符串,在php5.2.0之前,这个方法只能结合echo或print方法生效,php5.2.0之后,可以结合printf()修饰,但修饰的时候也不能用类似%d之类的非字符修饰符。
8、__invoke(),当尝试以调用函数的方式调用对象时,将出发这个函数,只在php5.3之后生效。
9、__set_state()静态方法,当调用var_export()的时候,才会调用这个静态方法,php5.1.0之后生效。唯一参数是接收一个数组。
10、__construct()和__destruct(),构造函数和析构函数,构造函数主要用于类的初始化,析构函数在某个对象的所有引用都 删除后或者对象被显示的销毁时运行。在析构函数中不允许抛出异常,否则会出发一个fatal error,析构函数在脚本结束时调用,此时所有的http header都已经发出.
11、__clone(),对象复制,此方法不能直接被调用,必须通过clone关键字显示调用

这是一段简单的代码,可实现统计该数据库中每个表的记录数,并按递减顺序排列的功能

一个字节有8位,所以32位int型占用32位/8位=4个字节,64位int型占用64位/8位=8个字节.

图片 2

代码:

$host = '127.0.0.1';
$port = 3306;
$dbname = 'test';
$username = 'root';
$password = '';
function ee($p)
{
  if(PHP_SAPI == 'cli')
  {
    echo "n";
  }else{
    echo "<pre>";
  }
  print_r($p);
  if(PHP_SAPI == 'cli')
  {
    echo "n";
  }else{
    echo "<pre>";
  }
}
$dsn = "mysql:host={$host};port={$port};dbname={$dbname}";
$opts = array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION, PDO::ATTR_AUTOCOMMIT=>0);
try {
  $pdo = new PDO($dsn, $username, $password, $opts);
}catch(PDOException $e){
  echo $e->getMessage();
}
//有查询结果
function query($sql)
{
  global $pdo;
  $stmt = $pdo->query($sql);
  $data = $stmt->fetchAll(Pdo::FETCH_BOTH);
  return $data;
}
//无查询结果
function execute($sql)
{
  global $pdo;
  $affect_rows = $pdo->query($sql);
  return $affect_rows;//影响条数
}
$tables = query("show tables");
$sort_data = array();
foreach($tables as $table)
{
  //表记录条数
  $count_sql = "select count(*) as num from {$table[0]}";
  $stmt = $pdo->query($count_sql);
  $info = $stmt->fetch(Pdo::FETCH_BOTH);
  $pad_table = str_pad($table[0], 25, ' ');
  $sort_data[] = array('table'=>$pad_table, 'num'=>$info['num']);
  $sort_index[] = $info['num'];
}
array_multisort($sort_index, SORT_DESC, $sort_data);
foreach($sort_data as $val)
{
  $row_str = <<<eof
 {$val['table']} [{$val['num']}]
eof;
 ee($row_str);
}

32位,64位无符号整型最大值:

这里说的imagick 是 ImageMagick 在PHP下的扩展。使用pecl安装起来那叫一个轻松简单一条命令就搞定:

//实例化对象时,会调用对象的__construct方法
$obj = new Object();
//给对象不存在的属性赋值时,会调用对象的__set方法
$obj->title = "hello";
//使用对象不存在的属性时,会调用对象的__get方法
echo $obj->title;
//调用对象不存在的方法时,会调用对象的__call方法
$obj->test("hello",123,567);
//调用不存在的类静态方法时,会调用类的__callStatic方法
Object::staticMethod("static","not found method");
//直接输出对象时,会调用对象的__toString方法
echo $obj;
//将一个对象当作函数一样使用时,会调用对象的__invoke方法
echo $obj("test");
//克隆对象时,会调用对象的__clone方法
$obj2 = clone $obj;
//判断对象属性是否存在时,会调用对象的__isset方法
var_dump(isset($obj->aaa));
//销毁对象属性时,会调用对象的__unset方法
unset($obj->aaa);


class Object{

  protected $array = array();

  function __construct()
  {
    echo __METHOD__."你正在实例化对象<br>";
  }

  function __set($name, $value)
  {
    $this->array[$name]=$value;
  }

  function __get($name)
  {
    return $this->array[$name];
  }

  function __call($name, $arguments)
  {
    var_dump($name,$arguments);
    return "magic functionn";
  }

  static function __callStatic($name, $arguments)
  {
    var_dump($name,$arguments);
    return "magic static function";
  }

  function __toString()
  {
    return __CLASS__.'<br>';
  }

  function __invoke($arguments)
  {
    var_dump($arguments);
    return __METHOD__.'<br>';
  }

  function __clone()
  {
    echo __METHOD__."你正在克隆对象<br>";
  }

  function __isset($name)
  {
    echo __METHOD__."你想判断有没有属性".$name."<br>";
    return 1;
  }

  function __unset($name)
  {
    echo __METHOD__."你想删除属性".$name."<br>";
  }


  function __destruct()
  {
    echo __METHOD__."你正在注销对象<br>";
  }



}

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php mysql数据库操作入门教程》、《php常见数据库操作技巧汇总》、《PHP基于pdo操作数据库技巧总结》及《PHP基本语法入门教程》

2^64-1 = 18446744073709551615

复制代码 代码如下:

以上就是关于php中的常用魔术方法的全部内容,希望对大家的学习有所帮助。

希望本文所述对大家PHP程序设计有所帮助。

2^32-1 = 4294967295

sudo pecl install imagick

您可能感兴趣的文章:

  • php 魔术方法使用说明
  • 详解php的魔术方法__get()和__set()使用介绍
  • php中的常用魔术方法总结
  • 深入PHP5中的魔术方法详解
  • PHP 5.3新增魔术方法__invoke概述
  • PHP类中的魔术方法(Magic Method)简明总结
  • php面向对象中的魔术方法中文说明
  • ThinkPHP查询中的魔术方法简述
  • PHP魔术方法__ISSET、__UNSET使用实例
  • PHP魔术方法__GET、__SET使用实例
  • php魔术方法与魔术变量、内置方法与内置变量的深入分析
  • PHP中的魔术方法总结和使用实例
  • php魔术方法功能与用法实例分析

您可能感兴趣的文章:

  • 发款php蜘蛛统计插件只要有mysql就可用
  • PHP使用redis实现统计缓存mysql压力的方法
  • PHP Mysql jQuery中国地图区域数据统计实例讲解
  • PHP Mysql jQuery文件下载次数统计实例讲解
  • php 广告点击统计代码(php mysql)
  • php下MYSQL limit的优化
  • php导入大量数据到mysql性能优化技巧
  • php mysql查询优化简单实例
  • 优化使用mysql存储session的php代码
  • PHP数据库编程之MySQL优化策略概述
  • PHP MySQL实现对一段时间内每天数据统计优化操作实例

32位,64位有符号整型最大值:

(扩展装好后还是要在php.ini中加上extension=imagick.so,然后记得重启apache或php-fpm服务。)

本文由小鱼儿玄机30码发布于编程,转载请注明出处:可实现统计该数据库中每个表的记录数,一个字

关键词: 小鱼儿玄机30码