首页
学习
活动
专区
圈层
工具
发布

PHP中 对象自动调用的方法:__set()、__get()、__tostring()

但是,对属性的读取和赋值操作是非常频繁的,因此在 PHP5中,预定义了两个函数 “__get()”和“__set()”来获取和赋值其属性,以及检查属性的“__isset()”和删除属性的方法 “__unset...我们为每个属性做了设置和获取的方法,在PHP5中给我们提供了专门为属性设置值和获 取值的方法,“__set()”和“__get()”这两个方法,这两个方法不是默认存在的, 而是我们手工添加到类里面去的,...()方法用来设置私有属性 public function __set($property_name, $value) { echo "在直接设置私有属性值的时候,自动调用了这个__set()方法为私有属性赋值...__tostring() TOstring(在这里故意这么写,是要说明PHP中方法不区分大小写,但实际开发中还需要注意规范)。当进行测试时,需要知道是否得出正确的数据。...实际上,PHP的toString魔术方法的设计原型来源于 Java。Java中也有这么一个方法,而且在Java中,这个方法被大量使用,对于调试程序比较方便。

3.4K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java中Set集合

    1、Set接口简介 一个不包含重复元素的集合; 此接口没有索引,没有带索引的方法; set接口跟Collection方法基本一致,主要研究其实现类; 2、HashSet 简介 此类实现set接口,由哈希表...= new HashSet(); set.add(7); set.add(1); set.add(4); set.add(4);//...集合存储元素不重复原理 基本思路: 当set调用add方法的时候,会将当前所要存储的元素的哈希值在集合中查找,若未查找到,则存储集合,若查找到则会调用equals方法,与集合中已经存在的相同哈希值的元素进行比较...,若返回true则不再将所要存储的元素存储到集合中,若返回false则将所要存储的元素存储到集合中。... set = new HashSet(); set.add(new Person("小明",18)); set.add(new Person("小兰"

    43710

    java中的Set集合

    概述 Set集合类似于一个罐子,程序可以依次把多个对象“丢进”Set集合,而Set集合通常不能记住元素的添加顺序。...实际上Set就是Collection只是行为略有不同(Set不允许包含重复元素)。...Set集合不允许包含相同的元素,如果试图把两个相同元素加入同一个Set集合中,则添加操作失败,add()方法返回false,且新元素不会被加入。...HashSet类 HashSet是Set接口的典型实现,大多数时候使用Set集合时就是使用这个实现类。HashSet按Hash算法来存储集合中的元素,因此具有很好的存取和查找性能。...):返回此Set的子集,由小于toElement的元素组成; SortedSet tailSet(Object fromElement):返回此Set的子集,由大于fromElement的元素组成; 用法

    1.7K10

    js中Set基本使用

    ECMAScript 6 新增的 Set 是一种新集合类型,为这门语言带来集合数据结构。Set 在很多方面都像是加强的 Map,这是因为它们的大多数 API 和行为都是共有的。 基本API 1....创建Set实例 使用 new 关键字和 Set 构造函数可以创建一个空集合: const s = new Set(); 如果想在创建的同时初始化实例,则可以给 Set 构造函数传入一个可迭代对象,其中需要包含插入到新集合实例中的元素...(Set 可以包含任何 JavaScript 数据类型作为值): const s = new Set(["val1", 1, true, {}, undefined, function fun() {}...Set实例转数组 const s = new Set([1, 2, 3]); Array.from(s); // [1, 2, 3] 3. size属性 size: 获取Set实例的元素个数: const...add(2).add(3); s.has(1); // true 6. delete() delete(): 删除Set实例中某个元素(返回布尔值): const s = new Set(); s.add

    3.2K30

    js中set和map的区别_list和set

    Map中的键值是有序的(FIFO 原则),而添加到对象中的键则不是。 Map的键值对个数可以从 size 属性获取,而 Object 的键值对个数只能手动计算。...): 判断Map对象中是否有Key所对应的值,有返回true,否则返回false delete(key): 通过键值从Map中移除对应的数据 clear(): 将这个Map中的所有元素删除 const...Set函数可以接受一个数组(或者具有 iterable 接口的其他数据结构)作为参数,用来初始化。 Set中的特殊值: Set 对象存储的值总是唯一的,所以需要判断两个值是否恒等。...中认为NaN与NaN相等,所有只能存在一个,不重复。....都能通过迭代器进行for…of遍历; 4.Set的值是唯一的可以做数组去重,Map由于没有格式限制,可以做数据存储 5.map和set都是stl中的关联容器,map以键值对的形式存储,key=value

    3.9K20

    python中的集合(Set)

    python中的集合(Set) 在Python中,集合(Set)是一种无序、无重复元素的数据结构。集合通过花括号 {} 或者使用 set() 函数进行创建。...与其他容器类型(如列表和字典)不同,集合中的元素是不可变的(不可被修改),且没有固定的顺序。 特点: 集合中的元素是唯一的,不存在重复的元素。 集合是无序的,不能通过索引访问或修改元素。...集合中的元素必须是不可变的类型(如数字、字符串、元组),不能包含可变对象(如列表、字典)。..., 'hello', True, 3.14} # 集合包含不同类型的元素 访问和操作集合: 由于集合是无序且不可索引的,无法直接访问集合中的特定元素。...fruits = {'apple', 'banana', 'orange'} count = len(fruits) # 获取集合中的元素个数 print(count) # 输出: 3 fruits.clear

    62110

    Python 中list ,set,di

    很多时候我们可能要频繁的进行元素的find 或in操作,本人一直天真的以为python的list做了hash,通过红黑树来高效查找···直到今天我真正来测试它和set,dict的查找效率时,才发现自已想太多了...先看代码: __author__ = 'jmh081701' import numpy import time l=[] sl=set() dl=dict() r=numpy.random.randint...start=time.clock() for i in range(100000): t=i in sl end=time.clock() print("set:",end-start) #计算通过...查找效率:set>dict>list 单次查询中:看来list 就是O(n)的;而set做了去重,本质应该一颗红黑树(猜测,STL就是红黑树),复杂度O(logn);dict类似对key进行了hash,...dict比set多了一步hash的过程,so 它比set慢,不过差别不大。 so,如果是要频繁的查找,请使用set吧!

    65510

    Python中的SET集合操作

    (t) s | t 返回一个新的 set 包含 s 和 t 中的每一个元素 s.intersection(t) s & t 返回一个新的 set 包含 s 和 t 中的公共元素 s.difference...(t) s - t 返回一个新的 set 包含 s 中有但是 t 中没有的元素 s.symmetric_difference(t) s ^ t 返回一个新的 set 包含 s 和 t 中不重复的元素...两个 sets 在也只有在这种情况下是相等的:每一个 set 中的元素都是另一个中的元素(二者互为subset)。...x) 从 set “s”中删除元素 x, 如果不存在则引发 KeyError s.discard(x) 如果在 set “s”中存在元素 x, 则删除 s.pop() 删除并且返回...set “s”中的一个不确定的元素, 如果为空则引发 KeyError s.clear() 删除 set “s”中的所有元素 请注意:非运算符版本的 update(), intersection_update

    1K10

    在set中已经 存在,返回

    void clear ( )将map中的元素清空iterator find ( const key_type& x )在map中插入key为x的元素,找到返回该元素的位置的迭代器,否则返回endconst_iterator...count ( const key_type& x ) const返回key为x的键值在map中的个数,注意map中key是唯一的,因此该函数的返回值要么为0,要么为1,因此也可以用该函数来检测一个key...是否在map中当key已存在时,insert插入失败[] 支持 查找,插入,修改【总结】map中的的元素是键值对map中的key是唯一的,并且不能修改默认按照小于的方式对key进行比较map中的元素如果用迭代器去遍历...,可以得到一个有序的序列map的底层为平衡搜索树(红黑树),查找效率比较高$O(log_2 N)$支持[]操作符,operator[]中实际进行插入查找。...#include set> void TestSet(){  int array[] = { 2, 1, 3, 9, 6, 0, 5, 8, 4, 7 }; // 注意:multiset在底层实际存储的是

    81310

    深入解析Java中Set接口

    前言   在Java中,数据结构是非常重要的一部分,而Set接口作为Java集合框架中的一部分,具有处理数据的独特能力。Set接口提供了无序、不重复的集合,可以存储任何类型的对象。...Set接口 简介   Set接口是Java集合框架中的一部分,它扩展Collection接口,提供了一种无序、不重复的集合。也就是说,在Set中,所有元素都是唯一的,不存在重复。...Set中的元素顺序是无序的,对于某些应用场景非常有利。 缺点包括: 元素不可重复。Set中不能保存重复的元素,这可能会导致某些问题,例如计数、排名等操作。...类代码方法介绍 add(E e):将指定的元素添加到Set中。如果该元素是Set中的重复元素,则返回false。 remove(Object o):从Set中删除指定的元素。...contains(Object o):如果Set包含指定的元素,则返回true。 isEmpty():如果Set中没有任何元素,则返回true。 size():返回Set中的元素数。

    45761
    领券