我是PHP的初学者,所以现在我尝试学习面向对象我是g目一点,我得到了一些想法,但不清楚的概念.所以我来到那里.请任何PHP大师给出简单的例子,如何crate类和如何调用其他php页.
例如
我想要两个类show name,第二个是enter name.第一类显示名称此名称来自数据库,第二类将名称放在数据库中.
的index.php
<form action="checking.php" method="post">
<input type="text" placeholder="Please enter name">
</form>
Run Code Online (Sandbox Code Playgroud) 我正在使用常规PHP开发一个Web系统.这是我第一次使用PHP,因此代码不易读,也不干净.它将一些HTML代码与PHP混合在一起.我说我已经完成了一半的代码.
面向对象PHP的真正优势是什么?该网站是关于书籍和书籍作者,使用MySQL和Apache.所以这不是一个非常复杂的网站.
我定义了一个新变量__construct(),我想在另一个function中使用它class.但是我的变量在另一个函数中是空的!
这是我的代码:
class testObject{
function __construct() {
global $c;
$data = array("name"=>$c['name'],
"family"=>$c['family']);
}
function showInfo() {
global $data;
print_r($data);
}
}
Run Code Online (Sandbox Code Playgroud) 我只是想知道是否有人可以帮助我理解如何在PHP中充分利用对象.
我对PHP对象的理解是应该代表一个实体,提供获取和改变该实体属性的方法.例如,名为Post的对象将保存单个帖子的所有属性,可以根据需要进行访问和修改.
让我感到困惑的是像CodeIgniter这样的库在这个庄园中不使用对象.他们将类更像是一组函数的包装器.所以CodeIgniter中的'Posts'类不会保存一个帖子的属性,它会提供获取,编辑和删除帖子的功能.
那么,如果我想从数据库中获取每个帖子并将其放入Post对象,会发生什么?我对它的理解是我实际上需要两个类'Posts'和'Post',一个定义Post对象,一个处理从数据库中获取Posts并将它们放入Post对象.
这两类类都有一个名称('正确'对象/函数集合)?有两个类这样一起工作或者我完全误解了如何使用对象是很常见的吗?
而不是拥有一个Post对象,在我的Posts类中有一个名为getSinglePost($ id)的方法只返回一个数组更有意义吗?
希望这个问题有意义,期待得到一些反馈.
我只想告诉你我是OOP的新手,这对我来说很难,但这是我的代码:
class functions
{
function safe_query($string)
{
$string = mysql_escape_string(htmlspecialchars($string));
return $string;
}
}
class info
{
public $text;
function infos($value)
{
echo functions::safe_query($value);
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法做出这句话:echo functions::safe_query($value);更漂亮?我可以使用extends,比我写的更好echo $this->safe_query($value);,但这是最好的方法吗?谢谢.
编辑:也许我甚至可以不使用类函数,只是创建单独的函数文件并包含它?
我在程序上用PHP编程(这是一个单词吗?)大约五年了,并决定尝试一种OOP方法,但遇到了一些概念/设计问题.假设您在程序中有一些模块,每个模块都可以列出,添加,编辑和删除实体.一个实体可以是..不知道,用户,客户,产品等.
你将如何设计类来操纵这些实体?
我想到了两种可能性:
提前致谢,
继承和OOP php中的一些属性除外?
我有一个A类
class A{
var a;
var b;
var c;
var d;
function todo1()
{
//more code here
}
function todo2()
{
//more code here
}
function todo_with_var_c()
{
//more code here
}
}
Run Code Online (Sandbox Code Playgroud)
$A_ = new A;
我希望得到一个新对象$B,A除了相同的对象var c todo_with_var_c
所以我尝试了继承 php
class B extends A{
//TODO
}
$B_ = new $B;//$B_ will the same object $A_ but except `var c`
and and `todo_with_var_c`
Run Code Online (Sandbox Code Playgroud)
我该怎么做?谢谢!
一直在寻找,但仍然找不到解决这个问题的方法.我的问题是我得到了这些代码片段(例子):
核心文件
class Core {
public $DB = null;
public $Handler = null;
function run() {
$this->DB = "somedatabase";
include_once('handler.php');
$this->Handler = new Handler;
$this->Handler->run();
}
}
Run Code Online (Sandbox Code Playgroud)
这是helper.php示例
class Handler extends Core {
function run() {
echo "<pre>"; print_r($this); echo "</pre>"; die();
}
}
Run Code Online (Sandbox Code Playgroud)
即使我在包含帮助程序之前定义了DB变量,那么它在辅助类中仍然是空的.它的定义是,但它是空的.这意味着它正确地不与Core类共享相同的内存.
请记住,它自己的Core类也是实例.
-
谢谢你的所有建议
编辑
PhpMyCoder做对了.感谢您详细而精心撰写的回复.两年多来,我一直认为PHP范围与JavaScript的范围相同或类似.现在我意识到,如果我扩展我的"核心"类,我会获得其中的所有方法和属性.但这些价值观对我的班级和我的班级来说都是私密的.
这很棒.终于我明白了.
我正在使用PHP一段时间,但.......我想我需要提高我的技能....因为我有麻烦的问题所以我正在寻找一个文章的网站,这可以让我舒服的工作语言......开发我的技能的解决方案是什么