为什么这甚至是一堂课?或为什么这些功能至少不是静态的?

| 我一直在尝试学习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想跑得快”。这只是审慎的设计,因为-也许-幕后发生了一些有状态的事情。     
好吧,我不确定为什么您找到的解决方案不是静态的。 我已经开始使用此解决方案,该解决方案是我在堆栈中找到的,以静态方式调用     

要回复问题请先登录注册