PHP:在类或构造函数外定义常量?
发布时间:2020-12-13 17:39:40 所属栏目:PHP教程 来源:网络整理
导读:我是班级和oo的新手. 我一直在寻找一个基本的 MySQL类,我找到了Matthew Saragusa的“简单的MySQL类”. 这些是第一行: define('SIMPLE_DB_SERVER','mysqlserver.net');define('SIMPLE_DB_NAME','mydbname');define('SIMPLE_DB_USERNAME','myusername');defin
我是班级和oo的新手.
我一直在寻找一个基本的 MySQL类,我找到了Matthew Saragusa的“简单的MySQL类”. 这些是第一行: define('SIMPLE_DB_SERVER','mysqlserver.net'); define('SIMPLE_DB_NAME','mydbname'); define('SIMPLE_DB_USERNAME','myusername'); define('SIMPLE_DB_PASSWORD','mypassword'); class ASimpleMySQLDB { public function __construct($server,$database,$username,$password){ $this->conn = mysql_connect($server,$password); $this->db = mysql_select_db($database,$this->conn); } [...] 我想知道在类之外定义哪些常量的具体原因,而不是使用构造函数 – 例如: public function __construct(){ $this->conn = mysql_connect('localhost','username','password'); $this->db = mysql_select_db('database',$this->conn); } 要么: public function __construct($which_db){ if($which_db=='firstdb'){ $server='localhost'; $username='user1'; $password='pass1'; $database='db1'; }elseif($which_db=='otherdb'){ $server='localhost'; $username='user2'; $password='pass2'; $database='db2'; } $this->conn = mysql_connect($server,$password); $this->db = mysql_select_db($database,$this->conn); } 或者使用开关或其他任何东西. 这两种方法有什么区别?你会推荐哪个?非常感谢 :-) 解决方法
虽然现在大多数OO PHP开发人员都不鼓励它,但许多库仍然使用define()来设置需要由实现库的最终方修改的配置常量.这些通常存放在需要/包含在需要此配置信息的类的配置文件中,或者如果全局需要,甚至可以进一步备份到堆栈中(WordPress会浮现在脑海中).
PHP 5包含类常量来实现同样的功能,但仅限于类本身的范围. http://php.net/manual/en/language.oop5.constants.php 这种方法是创建库所需的特定于类,不可更改的值的好方法.由于在PHP中使用OOP的主要目标之一是代码可重用性,因此可以很好地打包发布.对于数据库类,可以在构造方法定义所有访问凭据之前使用const声明,例如db_host,db_user和db_pass.请注意,这些常量必须由ClassName :: ConstName访问,就像静态方法一样. 尽管PHP中的OOP已经走过了漫长的道路并且现在已经普及,但是大量旧的或更多“锁定”框架和库仍然使用定义约定,因此即使在OO环境中也会看到它非常常用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |