Mal*_*lyo 5 php oop login-system
在构建网站时,我已经开始通过解决一些相当容易的问题来提高我的OOP技能.所以它从一个登录系统开始,我已经按照youtube上的一个教程,帮助我创建了一个Login类,但是随着它的继续,它引起了许多疑虑(顺便说一句.代码是100行所以我会传递它粘贴它).
所以在这个Login类中,有一些验证方法等,但它有一个会话验证点,在构造之前给定的参数,它不能被使用(至少在这个类范围内):
$this->_username = ($this->_login)? $this->filter($_POST['username']) : $_SESSION['username'];
$this->_password = ($this->_login)? $this->filter($_POST['password']) : '';
$this->_passmd5 = ($this->_login)? md5($this->_password) : $_SESSION['password'];
Run Code Online (Sandbox Code Playgroud)
所以在这种情况下,当没有设置会话变量时,我不能使用verifySession()方法(例如,不同的记录用户应该在主页上看到什么).
所以我的问题是 - 设计是否正确,我应该如何构建其他登录系统:在每个页面上登录验证并注销 - 如果它们中的每一个都处于单独的类中(那么方法,在特定类中重复,我应该继承它们吗?我意识到OOP有不同的方法,但是有什么特别的,我应该作为一个初学者(这将帮助我理解最好的oop).
“我已经遵循了 youtube 上的教程”是第一个问题。仅您粘贴的三行代码就表明您观看的视频是由业余 PHP 开发人员创建的。
“所以我的问题是 - 设计正确吗?我应该如何构建登录系统的其余部分”
由于只贴了三行,不知道设计是否正确。我敢打赌,事实并非如此。
关于何时使用对象的一个好的经验法则是,当代码明显足够先进,需要两个以上的函数时,将在应用程序的多个位置使用,并且如果代码不“好”,则很可能会出现命名冲突。 t 封装在对象或命名空间中。这不符合该标准 - 登录和注册屏幕各一页(最多),因此该代码将被使用一次。没有理由封装该逻辑。Niko 提到了 Session 和 User 类,它们是常见的模式,可以封装。
至于构建登录系统,它们很快就会变得复杂,并且现在几乎成为一种专业化。我建议阅读以下 SO wiki 文章:
如果你想要一个遵循上面wiki文章的预打包系统,你可以看看:
http://barebonescms.com/documentation/sso/
SSO 客户端不会向应用程序提供类 - 只是一组函数,例如 SSO_LoggedIn()、SSO_Login()、SSO_Logout() 等。当更简单的东西就足够时,仅仅为了执行 OOP 而执行 OOP 是错误的编写软件的方法。有时功能更好。有时内联代码会更好。这确实取决于情况,需要多年的经验才能洞察什么是最好的方法。
| 归档时间: |
|
| 查看次数: |
8069 次 |
| 最近记录: |