2009-07-08 63 views
4

我最近有一个想法来创建我自己的String类,以使使用PHP的函数更容易。我写$str->length()而不是strlen($str)。使某些功能中的参数订单更容易记忆,例如substrPHP应该使用对象作为基本数据类型吗?

我跑了一些时间脚本,发现它比使用常规函数慢了5倍。我还没有在真正的应用程序中测试过,所以我不知道这是多么微不足道(1ms vs 5ms或100ms vs 500ms?)。

无论如何,它让我感到震惊,现在PHP现在更多地关注OOP,对于字符串,数组和其他基本类型是否是面向对象是没有意义的?然后他们可以更好地命名这些功能,并且代码会“感觉”更好。慢慢地逐步淘汰旧的做事方式。对此有何利弊?

回答

4

您可以随时记录您的代码,并使用PHP提供的功能。从长远来看,很难判断它是否会影响你。有许多不同的因素可以影响这一点。给它一个镜头,也许,如果它不工作切换回原来的方式。

就我个人而言,我只是保留我的文档,而不是太花哨。如果你想推动更多的OOP,最好的办法就是看看框架。

我希望PHP从一开始就让它变得简单。代码看起来非常整齐。

+2

如果使用框架仍然是你不这样做,它可能是时候寻找到一个不同语言,特别是真正面向对象的语言。 – 2009-07-08 21:35:43

1

,我认为这将是很好的,但它不会是PHP更多...

0

我理解你为什么这样做,但做没有别的除了图书馆和抽象“使它对于程序员来说更容易“,这是浪费时间,以我的愚见。他们很少有效率,他们很费力,而且他们甚至有些自命不凡。

PHP有很多错误,这是可以肯定的,但是如果你尝试在任何地方发明解决方法,你会花费很多时间在其他地方使用。

1

当然,$somestring->length()是不错的,但是在反面你必须$somestring = new String('asdf...')每当你做一个字符串,然后不断转换字符串,反之亦然。从长远来看,你可能最终会让事情难以写下来。

我并没有真正看到PHP语言以这种方式改变 - 它会改变太多的基础语言。如果你想要一个这样的语言,你将不得不改变语言,而不是希望语言改变。

+0

现在这是不正确的。字符串对象可以使用__toString魔术方法作为常规字符串。 Array对象的索引访问可以使用ArrayAccess接口完成。我会做一些基准测试,看看这会对性能产生多大影响,会很整洁。 – 2014-12-19 10:35:33

0

看看Stringy。它给你一吨的有用的方法,让使用更加简单特别是UTF编码的字符串在PHP工作:

$stringy = S::create('Fòô', 'UTF-8'); 
count($stringy); // 3 
相关问题