ThinkPHP查询中的魔术方法简述
我们在使用thinkphp开发的时候,有时候会用到getById('1')这个方法快速的获取一条信息的内容,这个方法比用where(" id =1 ")->find()好用多了,同时查询效率也比find快速。
很多人在刚开始接触这个方法的时候,没有多留意它的内部实现机制,仅仅认为是通过id来获取信息,而事实并非如此。
例如有的系统里存在getByTitle("nihao")、getByMoney('1000')这类方法,这些与刚才提到的getById('1')很相似,同时实现的功能原理也与getById('1')一样。
其实类似这种getById($id)、getByTitle($title)、getByUserName($username)等等,以“getBy+字段”的方法有个专有名词叫做“魔术方法”,它后面的字段可以是数据表中的任何一个字段,返回结果只能是查询出来的第一条数据,这种方法查询的效率很高,很好记住。
有时候我们的字段不是连起来的,例如:user_name 这样子的字段,我们是不是这样子写(getByUser_name($name))呢?答案是否定的,thinkphp中不支持这样子的方法,我们需要使用驼峰法来命名,应该写成这样 getByUserName($name)就可以了!
相关推荐
-
PHP魔术方法__GET、__SET使用实例
__get() - 读取不可访问属性的值时,__get() 会被调用. __set() - 在给不可访问属性赋值时,__set() 会被调用. 复制代码 代码如下: <?php /** * 清晰的认识__get() __set() */ class Example { //公有的属性 public $public = 'pub' ; //受保护的 - 子类中该属性可用 protected $protected = 'pro'; //私有的 -
-
php 魔术方法使用说明
PHP5.0后,php面向对象提成更多方法,使得php更加的强大!! 一些在PHP叫魔术方法的函数,在这里介绍一下:其实在一般的应用中,我们都需要用到他们!! 1.__construct() 当实例化一个对象的时候,这个对象的这个方法首先被调用. Java代码 class Test { function __construct() { echo "before"; } } $t = new Test(); class Test { function __construct() { ec
-
PHP魔术方法__ISSET、__UNSET使用实例
__isset() – 在对类中属性或者非类中属性使用isset()方法的时候如果没有或者非公有属性,则自动执行__isset()的方法 __unset() - 在对类中属性或者非类中属性使用unset()方法的时候如果没有或者非公有属性,则自动执行__unset()的方法 复制代码 代码如下: <?php /** * 针对类中的魔术方法 __isset() 和 __unset() 的例子 */ class Example { public $public
-
PHP 5.3新增魔术方法__invoke概述
PHP自从5.3版以来就新增了一个叫做__invoke的魔术方法,使用该方法就可以在创建实例后,直接调用对象.如下示例所示: class testClass { public function __invoke { print "hello world"; } } $n = new testClass; $n(); 执行结果为: hello world. php官方示例如下: class CallableClass { public function __invoke($x) { va
-
PHP类中的魔术方法(Magic Method)简明总结
1. __construct()和__destruct() 在实例被 创建/销毁 的时候被调用,都可以传递0个或多个参数. class A { function A() { echo "build A"; } function __destruct() { echo "destroy A"; } } $obj = new A(); //unset($obj); Note:The destructor method will be called as soon as
-
深入PHP5中的魔术方法详解
从PHP 5以后的版本,PHP中的类就可以使用魔术方法了.其规定以两个下划线(__)开头的方法都保留为魔术方法,所以建议大家函数名最好不用__开头,除非是为了重载已有的魔术方法. 1.__get.__set这两个方法是为在类和他们的父类中没有声明的属性而设计的.◆__get( $property ) 当调用一个未定义的属性时,此方法会被触发,传递的参数是被访问的属性名.◆__set( $property, $value ) 给一个未定义的属性赋值时,此方法会被触发,传递的参数是被设置的属性名和值
-
php魔术方法功能与用法实例分析
本文实例讲述了php魔术方法功能与用法.分享给大家供大家参考,具体如下: <?php //php中的魔术方法 header('content-type:text/html;charset=utf-8'); class Person{ public $name; protected $sex; private $salary; //构造方法,实例化对象是自动触发的方法 public function __construct($name,$sex,$salary){ $this->name=$na
-
php魔术方法与魔术变量、内置方法与内置变量的深入分析
php内置变量了:DIRECTORY_SEPARATORDIRECTORY_SEPARATOR是一个返回跟操作系统相关的路径分隔符的php内置命令,在windows上返回/,而在linux或者类unix上反悔/,就是这么个区别,通常在定义包含文件路径或者上传保存目录的时候会用到.PHP 把所有以 __ (两个下划线)开头的类方法当成魔术方法.所以你定义自己的类方法时,不要以 __ 为前缀. 1 . __construct()当实例化一个对象的时候,这个对象的构造方法将首先被调用:我们知道 p
-
php中的常用魔术方法总结
常用的魔术方法有:__Tostring () __Call() __autoLoad() __ clone() __GET() __SET() __isset() __unset() 1.__Tostring() 用于定义输出对象引用时调用 常用于打印一些对象的信息 必须有返回值eg:有一个persion类Persion per =new persion()Echo per; //直接调用会出错我们可以在类的定义中添加__tostring()方法 复制代码 代码如
-
php面向对象中的魔术方法中文说明
1.__construct() 实例化对象是被自动调用.当__construct和以类名为函数名的函数 同时存在时调用__construct,另一个不背调用. 类名为函数名的函数为老版的构造函数. 2.__destruct() 当删除一个对象或一个对象操作结束是被调用. 3.__call() 对象调用某个方法.若方法不存在,这调用__call 这个方法 4.__get() 读取一个对象属性,如果对象属性是私有的会调用它 5.__set() 给一个对象属性赋值时如果属性是私有的会调用它 6.__t
-
php中的常用魔术方法汇总
这篇文章详细的对php中的常用魔术方法进行了整理归纳,分享给大家供大家参考,具体内容如下 1.PHP把所有"__"开头的方法当做魔术方法,所以任何自定义的方法都不能是"__"开头 php提供的重载,是指动态的创建属性或方法.重载是通过魔术方法来实现的.这些魔术方法的参数不能饮用传递,__get(),__set(),__isset(),__unset(),实现类属性重载. 2.当访问类中不可访问的属性时,将调用__get()方法 3.当访问类中不可访问的属性时,根据不
-
PHP中的魔术方法总结和使用实例
魔术方法是PHP面向对象中特有的特性.它们在特定的情况下被触发,都是以双下划线开头,你可以把它们理解为钩子,利用模式方法可以轻松实现PHP面向对象中重载(Overloading即动态创建类属性和方法).魔术方法很多还是成对出现的,以下列出目前PHP中所有的模式方法. 1.__construct,__destruct __constuct构建对象的时被调用: __destruct明确销毁对象或脚本结束时被调用: 2.__get,__set __set当给不可访问或不存在属性赋值时被调用 __get
-
详解php的魔术方法__get()和__set()使用介绍
先看看php官方文档的解释: __set() is run when writing data to inaccessible properties. __get() is utilized for reading data from inaccessible properties. 究竟用中文怎么翻译呢? inaccessible :n. 难达到:难接近:无法理解. 有代码有真相: 复制代码 代码如下: <?php error_reporting(E_ALL); class stu{ priv
随机推荐
- PHP 的异常处理、错误的抛出及回调函数等面向对象的错误处理方法
- 深入理解redis分布式锁和消息队列
- Java实现循环体的过滤器的方法
- Oracle数据库基本常用命令汇总
- 利用PHP将图片转换成base64编码的实现方法
- Redis基本知识、安装、部署、配置笔记
- MYSQL替换时间(年月日)字段时分秒不变实例解析
- mysql exists与not exists实例详解
- Ajax通过XML异步提交的方法实现从数据库获取省份和城市信息实现二级联动(xml方法)
- 如何利用JConsole观察分析Java程序的运行并进行排错调优
- apache rewrite防盗链三例
- JavaScript实现动态创建CSS样式规则方案
- java 实现约瑟夫环的实例代码
- 改进的IP计数器
- Android UI实现SlidingMenu侧滑菜单效果
- Java编程实现深度优先遍历与连通分量代码示例
- Laravel5.7 数据库操作迁移的实现方法
- 关于python3中setup.py小概念解析
- 解决layui的radio属性或别的属性没显示出来的问题
- JS实现点击按钮随机生成可拖动的不同颜色块示例