以OOP方式学习PHP,我常常遇到像这样的函数的人。
public function getUsername() {
return $this->username;
}
这背后有一些安全性推理吗?而不是直接调用类的用户名属性?为什么要包装获取函数周围的属性。
答案 0 :(得分:2)
此类<?php
/**
* @category design
* @package accessshop_lite_default
* @copyright Copyright (c) 2015 AccessShop Themes (http://www.accessshopthemes.com)
* Template for Mage_Page_Block_Html
*/
?>
<!DOCTYPE html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="<?php echo $this->getLang(); ?>"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8" lang="<?php echo $this->getLang(); ?>"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9" lang="<?php echo $this->getLang(); ?>"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="<?php echo $this->getLang(); ?>"> <!--<![endif]-->
<head>
<?php echo $this->getChildHtml('head'); ?>
</head>
<body<?php echo $this->getBodyClass()?' class="'.$this->getBodyClass().'"':'' ?>>
<?php echo $this->getChildHtml('after_body_start'); ?>
<?php echo $this->getChildHtml('global_notices'); ?>
<header>
<?php echo $this->getChildHtml('header'); ?>
</header>
<?php echo $this->getChildHtml('slider'); ?>
<div class="maincontent col2-layout">
<div class="container">
<div class="row">
<div class="col-md-12">
<?php echo $this->getChildHtml('breadcrumbs'); ?>
<aside class="col-right sidebar">
<?php echo $this->getChildHtml('right'); ?>
</aside>
<div class="col-main">
<?php echo $this->getChildHtml('global_messages'); ?>
<?php echo $this->getChildHtml('content'); ?>
</div>
</div>
</div>
</div>
</div>
<div class="brands">
<div class="container">
<div class="row">
<div class="col-md-12">
<?php echo $this->getChildHtml('home-block-brands'); ?>
</div>
</div>
</div>
</div>
<section id="before-footer">
<?php echo $this->getChildHtml('before-footer'); ?>
</section>
<footer id="footer">
<?php echo $this->getChildHtml('footer'); ?>
</footer>
<?php echo $this->getChildHtml('before_body_end'); ?>
<?php echo $this->getAbsoluteFooter(); ?>
</body>
</html>
用于访问function
的{{1}}或private
成员。您无法直接在protected
之外访问它们,因为只能在class
内访问它们。那么,如果您想访问class
会员,您会怎么做?答案是这样的。
让我们举一个例子 -
class
答案 1 :(得分:0)
在OOP中,类应隐藏其实现细节,并提供必要的公共函数。用户更关注功能而不是细节。
答案 2 :(得分:0)
例如,你有课程测试。您正在使用直接访问财产,并且您有一百个地方,如$ obj-&gt; date =&#39; now&#39;等
<label>
但是如果你需要在更新值或修改输入值之前插入一些代码呢?在这种情况下,您必须找到该属性的所有用法并进行更新。但是如果你使用getter / setter,你可以在其中插入一些代码。
class Test {
public $date;
}
答案 3 :(得分:0)
一个快速的原因是您正在编写一段代码并希望阻止用户覆盖对象实例中的值(一个很好的例子就是配置数据)。
以您所述的方式编写函数还提供了一个标准界面,在开发复杂程序时这是必不可少的。让一个开发人员团队使用一个类而不是定义变量访问权限会很疯狂!
以下是对PHP OOP基础知识的一个很好的解释,并解释了private
,public
和protected
http://php.net/manual/en/language.oop5.basic.php