如何解决为什么这甚至是一堂课?或为什么这些功能至少不是静态的?
| 我一直在尝试学习PHP,并且在制作自己的博客引擎方面进展非常顺利。当需要集成OAuth时,我遇到了此解决方案来加密密钥。 用法说可以按照以下方式做一些事情:<?php
// a new proCrypt instance
$crypt = new proCrypt;
// encrypt the string
$encoded = $crypt->encrypt( \'my message\');
echo $encoded.\"\\n\";
// decrypt the string
echo $crypt->decrypt( $encoded ) . \"\\n\";
?>
我的问题是...为什么这是一堂课?似乎有两个功能就可以了。我真的不明白为什么我要实例化一个对象然后调用一些方法。这是OOP思维运行的例子吗?还是我在这里缺少什么?
如果有某些令人信服的理由使它成为一类,为什么这些方法不是静态的,以便我可以只叫proCrypt::encrypt( \'my message\' );
?
这与我编写的许多代码一直在使用静态函数有关,或者与函数式编程(而不是OOP)兼容。如果我做错了什么可怕的事,我想知道。
解决方法
该类具有一些可以设置为影响加密结果的变量。如果要将此类设为静态,则只需设置一次这些变量,使用该函数的每个人都会受到影响。相反,如果将其设为对象,则可以轻松创建具有不同值的多个版本。
,可能是因为某些加密算法需要一些其他状态作为输入(例如公用/专用密钥),并且由对象封装。
,一种可能性:“记忆”。
在这里,一个类可能很有用,因为它可以保留中间结果或缓存先前的结果。
那不是“ OOP想跑得快”。这只是审慎的设计,因为-也许-幕后发生了一些有状态的事情。
,好吧,我不确定为什么您找到的解决方案不是静态的。
我已经开始使用此解决方案,该解决方案是我在堆栈中找到的,以静态方式调用
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。