首页 > 解决方案 > 如何在 PHP 中从另一个文件访问类属性

问题描述

我想从我的另一个文件中访问类属性,但我不知道如何。

我正在创建一个类,其目标是使用参数(表名、ID 和表字段)中传递的数据生成一个 CRUD 表。

我已经在文件中创建了类main.php,但我也使用了一个名为的外部文件res.php,该文件将负责调用数据库并构建表。

一旦类完成并准备好使用,它的功能将在我所有项目的任何文件中。如果我实例化该类的对象,将使用以下内容创建一个 CRUD 表:

$test = new GenerateCrud('users_test', 'id', ['usuario', 'apellido1', 'apellido2', 'email']);
$test->showTable();

我的问题:要创建表,我必须访问类的属性,因为我需要打印表名、字段等。

我怎么了?我不知道该怎么做。

我的班级文件main.php

<?php
        
    class GenerateCrud {
        
        // Properties.
        
            public $tableName;
            public $id;
            public $tableFields = array();
    
        // Constructor.
        
            function __construct($tableName, $id, $tableFields){
                $this->tableName = $tableName;
                $this->id = $id;
                $this->tableFields = $tableFields;
            }
    }
?>

我的外部文件res.php

<?php

    include_once('main.php');

?>  

        <div class="container caja">
            <div class="row">
                <div class="col-lg-12 col-sm-12">
                    <div>
                        <table id="tablaUsuarios" class="table table-striped table-bordered table-condensed" style="width:100%" >
                            <thead class="text-center">
                                <tr>
                                    <!-- CREATE FOR EACH TO SHOW THE TABLE FIELDS -->
                                </tr>
                            </thead>
                            <tbody>
                            </tbody>
                        </table>
                    </div>
                </div>
            </div>
        </div>
        <script>
            $(document).ready(function() {
                var tableName = "<?php echo $this->tableName; ?>"; // HEREEEEEEEEEEEEEEEEEEE
                console.log(tableName);
            });
        </script>
<?php   
}

?>

我知道变量 $this 没有指向任何东西,因为我没有实例化一个对象,但是,它是否像实例化一个对象一样简单,就是这样?我不会得到错误更改或类似的信息吗?当我再次实例化对象时,它不会给我带来问题吗?

我知道我没有很好地描述这个问题,而且我知道我缺乏知识,这很明显,这就是我在这里要求尝试学习的原因。

如果有人可以向我解释他们解释的原因以理解这一点,我将非常感激。

谢谢你,祝你有美好的一天。

标签: php

解决方案


为了访问属性tableName,您必须首先初始化 GenerateCrud 对象。我也main.phpres.php不到对象初始化。

你说要生成你使用的 CRUD 表

$test = new GenerateCrud('users_test', 'id', ['usuario', 'apellido1', 'apellido2', 'email']);
$test->showTable();

但它是在你的代码中添加的?是在里面main.php还是res.php 我会建议你将这段代码添加到main.php文件的顶部,然后你将能够获得tableName财产

像这样的东西

<?php

include_once('main.php');

$test = new GenerateCrud('users_test', 'id', ['usuario', 'apellido1', 'apellido2', 'email']);
?>

<div class="container caja">
    <div class="row">
        <div class="col-lg-12 col-sm-12">
            <div>
                <table id="tablaUsuarios" class="table table-striped table-bordered table-condensed" style="width:100%" >
                    <thead class="text-center">
                        <tr>
                            <!-- CREATE FOR EACH TO SHOW THE TABLE FIELDS -->
                        </tr>
                    </thead>
                    <tbody>
                    </tbody>
                </table>
            </div>
        </div>
    </div>
</div>
<script>
    $(document).ready(function() {
        var tableName = "<?= $test->tableName; ?>"; // HEREEEEEEEEEEEEEEEEEEE
        console.log(tableName);
    });
</script>

推荐阅读