php父类查子类数据 php子类调用父类的构造函数

php如何获取父类下所有子类Id今天做项目时遇到php如何获取父类下所有子类Id??,把代码分享给大家 。
复制代码代码如下:
function getChildrenIds ($sort_id)
{
$db = $this-loadDB();
$ids = '';
$sql = "SELECT * FROM t_dept WHERE `parent_id` = '{$sort_id}'";
$query = $db-query($sql);
$result = $query-result_array();
if ($result)
{
foreach ($result as $key=$val)
{
$ids .= ','.$val['id'];
$ids .= $this-getChildrenIds ($val['id']);
}
}
return $ids;
}
php 父类调用子类 函数php父类查子类数据我建议php父类查子类数据你在父类中定义一个空函数php父类查子类数据:
class Db {
// ...
public function connect($config='',$linkNum=0,$force=false) {}
}
或者干脆定义为抽象类(抽象类是不能实例化的)php父类查子类数据:
abstract class Db {
// ...
// 注意这里不能有函数体
abstract public function connect($config='',$linkNum=0,$force=false);
}
父类不能调用子类的函数 。这里相当于”父类“调用自己的函数php父类查子类数据,但这个函数被子类继承(或者实现) 。
php 如何在父类访问子类的属性可以
用$this就可以php父类查子类数据了 。
静态php父类查子类数据的属性直接用类名访问
php 知道父类id查找所有子类id,怎么写 。function getAllIds($id)
{
$res = mysql_query("select * from `表名` where father_id='$id'");
while($row = mysql_fetch_array($res,MYSQL_ASSOC))
{
print_r($row);
getAllIds($row['class_id']);
}
}
php父类如何调用子类的静态方法或变量?php父类中怎么调用子类的的静态属性了,Oh,my god,如果被面试官问道这种问题,你一定会说shit,fucky question 。你会说我很少这么做,况且php对于静态的操作太随意了,php在父类调用子类的静态属性是一件麻烦的事情 。我们知道子类中调用父类的静态属性,可以用self::的形式 。但是父类调用子类如果用self::就只能调用到父类的静态属性 。那么,怎么办了?php是不是无法做到了?答案当然是否定的 , php中还可以使用在父类中用子类的类名来调用的方法 。
不过,这当中仍然存在一个问题,就是如果我有多个类继承了同一个父类 , 而且父类的某个函数要用到各个子类的静态属性的话,就想当trouble了 。这里有个php的朋友提供了一种思路,采用在子类中重载父类的方法使父类得到静态属性 。父类中使用了get_class函数得到类名 , get_class()是父类名,get_class($this)是子类名 。好了得到这个再用eval函数做下执行语句就OK啦 。例子:
//父类class A {
public function __con(){
//这里主要为让大家看清楚 , 所以打印出来类名,供大家学习
echo(get_class($this)).'/';
echo(get_class()).'/';
eval(\$ab =. get_class($this) . ::\$table;);echo $ab;}}//子类Bclass B extends A {
static $table = 'b table';
function __construct(){
$this-__con();}}//子类Cclass C extends A{
static $table = 'c table';
function cc(){
$this-__con();}}//调用
new B; //输出结果 B A b table
$c = new C;
上面就是php父类调用子类静态成员的方法,在子类重载父类的方法还是相当不错的,当时听朋友提起这个时 , 就异常激动 。父类我们也叫做基类,或者底层类 。一般都是最先设计,子类就是根据各个需要来设计,所以我们子类修改的可能性比较大,操作灵活性也比较大 。
php写函数 根据子类(id)递归查找顶级父类(id) 返回父类名字 (表结构:id name pid)你这种表结构叫邻接表,查询的方式通过自连接 。如
SELECT t1.name AS lev1, t2.name as lev2, t3.name as lev3, t4.name as lev4
FROM Tbname AS t1
LEFT JOIN Tbname AS t2 ON t2.pid = t1.id
LEFT JOIN Tbname AS t3 ON t3.pid = t2.id
LEFT JOIN Tbname AS t4 ON t4.pid = t3.id
WHERE t1.name = 'XXXX'
这种方法的主要局限是你需要为每层数据添加一个自连接,随着层次的增加,自连接
变得越来越复杂,检索的性能自然而然的也就下降了 。当然这种结构在查询前必须知道该节点所处的层级,否则无法确定自连接的深度 。
邻接表模型的局限性很大,用纯SQL实现有一定的难度 。不妨考虑其他模型,比如嵌套模型 。
嵌套模型的基本结构是树型结构,SQL检索比邻接表要方便很多 。
关于嵌套模型 , PHPChina的第一期电子杂志PHPer也有过深入探讨,请参考!
【php父类查子类数据 php子类调用父类的构造函数】关于php父类查子类数据和php子类调用父类的构造函数的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息 , 记得收藏关注本站 。

    推荐阅读