Php Cookie签入OOP
直到昨天,我还在焦头烂额地试图从程序思维转变为面向对象思维;今天早上我放弃了。我对自己说,我可能还没有准备好去理解它 然后我开始以通常的方式编码,编写一个函数来检查是否有“记录”的cookie 因为我遇到了一个问题:我想返回两个变量(Php Cookie签入OOP,php,oop,Php,Oop,直到昨天,我还在焦头烂额地试图从程序思维转变为面向对象思维;今天早上我放弃了。我对自己说,我可能还没有准备好去理解它 然后我开始以通常的方式编码,编写一个函数来检查是否有“记录”的cookie 因为我遇到了一个问题:我想返回两个变量($logged和$cookieValue),而不是一个。我搜索了一下,发现Jasper从OOP的角度解释了一个方法(或者这就是我所看到的)。 这个答案让我对OOP有了一个新的认识,因此我试图通过这种方式重写我试图实现的目标: class chkCookie { pu
$logged
和$cookieValue
),而不是一个。我搜索了一下,发现Jasper从OOP的角度解释了一个方法(或者这就是我所看到的)。
这个答案让我对OOP有了一个新的认识,因此我试图通过这种方式重写我试图实现的目标:
class chkCookie {
public $logged;
public $cookieValue;
public function __construct($logged, $cookieValue) {
$this->logged = $logged;
$this->cookieValue = $cookieValue;
}
function chkCookieLogin() {
$out = new chkCookie();
if(isset($_COOKIE["logged"])) {
$out->logged = 'true';
$out->cookieValue = $_COOKIE["logged"];
return $out;
}
else {
$out->logged = 'false';
return $out;
}
}
}
$vars = chkCookieLogin();
$logged = $vars->logged;
$cookieValue = $vars->cookieValue;
echo $logged; echo $cookieValue;
很明显,第一次尝试时它不起作用……第二次和第三次也不起作用。但这是我第一次感觉到我已经迈出了“真正触动”OOP的一步(或者这就是我所想的!)
我的问题是:
使用,可以设置如下对象:
class Factory {
private $Data = [];
public function set($index, $data) {
$this->Data[$index] = $data;
}
public function get($index) {
return $this->Data[$index];
}
}
然后,要使用DI模块,可以设置如下方法(使用):
使用错误检查,我们可以在需要时调用该方法:
$cookieArr = is_callable($f->get('Check-Cookie')) ? call_user_func($f->get('Check-Cookie')) : [];
echo $cookieArr[0] ? $cookieArr[1] : 'Logged is not set';
<>我也会考虑将常数添加到DI类中,允许使用更动态的方法,而不是每次进行错误检查。例如,在
set()
中包含一个常量,如Factory::FUNC_ARRAY
,这样您的get()
方法可以返回已经执行的闭包
如果您感到困惑,可以研究使用
看看它在哪里工作如果这有什么意义的话,那是一种可怕的做法。。。回到过程,注意您可以
返回数组(“logged”=>logged$logged,“cookieValue”=>cookieValue)代码>我认为codereview上的朋友们可以在这一点上帮助你更好,@Niet the Dark Absol End但除了饼干检查的具体案例,我是否接近OOP思维?”因为对我来说,尝试从一种方法切换到另一种方法时,会有同样的感觉,就像蒙着眼睛在黑暗的房间里行走一样:我没有把握@费德肯:谢谢你的提示!我甚至不知道它的存在!好吧,等我长大了,我想和你一样。它是如此的不同,而且比我现在编写的(糟糕的)风格更复杂,以至于我感觉自己像个婴儿!我会逐字研究你的剧本,深入其中,因为它很吸引人哈,很高兴我能帮上忙@我不知道为什么这是个好答案。Factory
类在这里只是一个数组。仅仅因为某个地方有“类”这个词并不意味着这不是一个过程代码。不要破坏他的氛围;)这是一个如果更适合@Federkun
$f = new Factory();
$f->set('Cookies', $_SESSION);
$f->set('Check-Cookie', function() use ($f) {
return $f->get('Cookies')['logged'] ? [true, $f->get('Cookies')['logged']] : [false, null];
});
$cookieArr = is_callable($f->get('Check-Cookie')) ? call_user_func($f->get('Check-Cookie')) : [];
echo $cookieArr[0] ? $cookieArr[1] : 'Logged is not set';