首页 开发编程 正文

php怎么找对象(PHP如何创建空对象,替代数组操作)

引言我们已经习惯在框架里编写类库接口,使用面向对象的方式构建规模以上的应用程序。PHP版本迭代并加入的对象操作特性非常丰富。PHP的类是独立存在的,PHP的类除非手动严格指定继承类,PHP提供了标准的stdClass对象用于构建空对象。你讲很大程序上享受不到PHP带来的数据操作便利。甚至国外的大型网站例如facebook、youtob...

PHP如何创建空对象,替代数组操作?

引言

我们已经习惯在框架里编写类库接口,使用面向对象的方式构建规模以上的应用程序。但是还有很多机会,时时刻刻与PHP数组打交道。

PHP版本迭代并加入的对象操作特性非常丰富。今天我们来说一说最基础的PHP空对象,怎么使用,以及注意事项。

学习时间

如果是数组,我们可能这样存储数据:

$aVal = array();

$aVal[key1][var1] = "something";

$aVal[key1][var2] = "something else";

那么有没有办法像下面这样操作数据呢?

(object)$oVal = "";

$oVal->key1->var1 = "something";

$oVal->key1->var2 = "something else";

当然了,这个是伪代码。PHP中自带了 stdClass 对象,声明空对象使用下面的方法:

$x = new stdClass();

stdClass是默认的PHP对象。stdClass没有属性,方法或父级。它不支持魔术方法,并且不实现任何接口。

当将标量或数组转换为Object时,将获得stdClass的实例。只要需要通用对象实例,就可以使用stdClass。

创建 stdClass 的示例,可以使用下面的任意方式:

$x = new stdClass;

$y = (object) null; // 同上

$z = (object) 'a'; // 创建属性 'scalar' = 'a'

$a = (object) array('property1' => 1, 'property2' => 'b');

你需要格外注意:

stdClass不是基类! PHP类不会自动从任何类继承。 所有类都是独立的,除非它们显式扩展了另一个类。 在这方面,PHP与许多面向对象的语言不同。

你无法在代码中定义名为“ stdClass”的类。 该名称已被系统使用。 你可以定义一个名为“Object”的类。也可以定义一个扩展stdClass的类,但不会获得任何好处,因为stdClass不执行任何操作。

再举一个例子:

class CTest { public $property1; } $t = new CTest; var_dump($t instanceof stdClass); // false var_dump(is_subclass_of($t, 'stdClass')); // false echo get_class($t) . "\n"; // 'CTest' echo get_parent_class($t) . "\n"; // false (no parent)

注意,PHP的类是独立存在的,上面的 CTest 类也绝不是继承自 stdClass 对象。

写在最后

通过本文,你应该收获一个重要的概念,那就是,PHP 的类除非手动严格指定继承类,否则都是独立存在的。

同时,PHP 提供了标准的 stdClass 对象用于构建空对象。操作数据时可以不用像数组那样了。但是,抛开数组,你讲很大程序上享受不到PHP带来的数据操作便利。

Happy coding :_)

我是 @程序员小助手 ,持续分享编程知识,欢迎关注。

学了php语言如何想出去工作,需要学哪些?

PHP的特性和优点:

1、快捷性,程序开发快,运行快,前期保护费用低,完美支持移动APP开发。PHP已经是国际大部门Web项手段首选,以至众多公司从其它语言(如ASP,JAVA)转到了PHP,不仅仅国内的腾讯、百度、淘宝、京东、点评网、糯米网,甚至国外的大型网站例如facebook、youtobe、google也转到用PHP来开发。微信官网宣布的开发者文档就是PHP版。今朝全球5000万互联网网站中,有60%以上使用着PHP;PHP是全球五大最受欢迎的编程语言之一,AlexaTOP500中国网站排名,有394家使用了PHP,比例为78.8%。

2、跨平台性强,由于PHP是运行在服务器端的脚本,可以运行在UNIX、LINUX、WINDOWS、Mac OS下。

3、运营高效性。相对java等,PHP消耗相当少的系统资源。由于PHP运行在相应的平台解释器上,消耗系统资源比较少,运行的环境简单,所以效率就很高。

4、面向过程和面向对象并用。在PHP语言的使用中,可以分别使用面向过程和面向对象,而且可以将PHP面向过程和面向对象两者一起混用,这是其他很多编程语言是做不到的。

5、PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法,兼容性强。

6、数据库连接的广泛性。PHP支持几乎所有流行的数据库以及操作系统,如MySQL、ODBC、Oracle、AdabasD、S等,PHP是利用编译的不同函数与这些数据库建立起连接的,PHPLIB就是常用的为一般事务提供的基库。。

7、PHP可以比CGI或者Perl更快速的执行动态网页——动态页面方面,与其他的编程语言相比:PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成htmL标记的CGI要高许多;PHP具有非常强大的功能,所有的CGI的功能PHP都能实现。

值得推荐的开源PHP、CMS系统有哪些?

CMS系统基本上也就等于PHP CMS了,主流的CMS系统基本上全都是PHP开发的,WordPress作为第一大开源CMS系统,基本上是这个领域的绝对王者,今天我给大家推荐一下到底有哪些出色的CMS系统。

WordPress是这个领域的绝对王者

一个搜索引擎如果不能很好判断分析一个WordPress站点,你可以认为这个搜索引擎做得不合格。在SEO领域、以及个人站长、个人博客,基本上都会选择WordPress作为第一选择,这基本上已经是行业的共识。TechCrunch、白宫官网、LinkedIn博客、Facebook新闻中心、微软新闻中心等众多知名网站,都是用WordPress搭建的。

免费、开源,这基本上是大家选择WordPress的主要理由,全球排名前1000万的网站有超过33.4%是基于WordPress搭建的,都是基于WordPress搭建的,基本上WordPress就是这个领域的标准,很多大企业也用WordPress建站。

免费、开源,这是WordPress最大的优势,开源保证了极大的可扩展性,WordPress有着非常的插件库、主题库,而且WordPress对于开发者是非常友好的,要做二次开发非常好。WordPress的论坛和文档也非常方便,基本上有问题这里都能找到。

我最喜欢的WeCenter,以及同样简洁的Typecho、Tipask

WeCenter的确是我个人最喜欢的CMS,也是我自己真正去搭建、研究了的第二个开源CMS系统了,WeCenter是一个仿知乎的开源问答系统,PC端更像一个信息流问答网站,功能上极其简洁,非常适合用来做垂直问答社区。

喜欢的原因就是简洁,真的是非常简洁,界面一看上去就非常清爽,假设你需要的功能不是特别复杂,又需要一个比较完整的后台,那么我觉得WeCenter非常适合你。而且作为一个有用户中心的全功能CMS系统,用来学习研究也是比较不错的。

Typecho是一个比较新的开源系统,很多极客选择这样的,这个系统也已经比非常成熟了,我看到很多开发者和学生党,也都在用这个系统,这个系统同样非常轻量级,用起来非常方便,而且也有丰富的参考文档。

Tipask也是一个非常好的开源问答社区,这玩意儿最大的优势就是跟宝塔Linux面板搭配得非常好,这个也是一个比较大的优势,毕竟有很多人用这个东西,你可以非常方便地通过宝塔Linux面板平滑升级。

在腾讯手里成功死而复生的Discuz!

Discuz!也是论坛领域的扛把子,曾经也是开源界最好的论坛系统之一,也是到目前为止,国内开发的最好的开源CMS,这个系统是戴志康带领团队开发的,被腾讯收购之后进入腾讯,这个项目一度被搁置了。

直到后来腾讯云重新接管这个系统,同样是因为开发系统被腾讯收购的吴洪声接管了Discuz!,这个项目重新被腾讯重视,终于迎来了回归,目前Discuz!全新版本Discuz! Q已经接近要发布了,这可是论坛系统的王者,希望Discuz!能够在腾讯手里重新焕发荣光。

政府网站领域占据着极大份额的帝国CMS,虽然技术老确实很多政府部门的第一选择,开源考试系统PHPEMS,开源博客系统Z-Blog PHP,以及同样政企领域占据极大份额的PageAdmin CMS,还有非常前卫和现代化的Ghost,都是非常出色的开源系统。开源系统能够降低成本,而且随着这些系统越来越成熟,你需要的功能,可以有的扩展都会越来越多,假设你是开发者的话,你还能学习一下。

php如何抓取行业词库?

php抓取行业词库的第一步是实现序列化,也就是按照顺序去抓取字节,PHP不支持永久对象,在OOP中永久对象是可以在多个应用的引用中保持状态和功能的对象,这意味着拥有将对象保存到一个文件或数据库中的能力,而且可以在以后装入对象。这就是所谓的序列化机制。PHP 拥有序列化方法,它可以通过对象进行调用,序列化方法可以返回对象的字符串表示。然而,序列化只保存了对象的成员数据而不包话方法。

第二步是构造函数,构造函数是类中的一个特殊函数,当使用 new 操作符创建一个类的实例时,构造函数将会自动调用。当函数与类同名时,这个函数将成为构造函数。如果一个类没有构造函数,则调用基类的构造函数。

第三步,是分析解构函数,PHP 5 引入了析构函数的概念,这类似于其它面向对象的语言,如 C++。析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。

第四步是,遵守cookie机制进行运作,cookie 是一种在远程浏览器端储存数据并以此来跟踪和识别用户的机制。

可以用 setcookie() 或 setrawcookie() 函数来设置 cookie。cookie 是 HTTP 标头的一部分,因此 setcookie() 函数必须在其它信息被输出到浏览器前调用,这和对 header() 函数的限制类似。可以使用输出缓冲函数来延迟脚本的输出,直到按需要设置好了所有的 cookie 或者其它 HTTP 标头。

第五步,制造比如simple dict之类的简单工具,进行词库的捉取,不用安装扩展,也不依赖 xcache memcache redis 之类的缓存。当然也可以更复杂,采用complex,附加更多组件和程式原理。

PHP哪个函数用于确定对象类型?

PHP中的is_object()函数,用于判断变量类型是否为对象类型。

本文转载自互联网,如有侵权,联系删除