Php 获取其他数据的函数和类
好的,所以我试图从用户那里获取id,如果我键入Php 获取其他数据的函数和类,php,mysql,function,variables,Php,Mysql,Function,Variables,好的,所以我试图从用户那里获取id,如果我键入$getid='1'一切正常 require_once "../maincore.php"; $getid = '1'; class UploadHandler { protected $options; // ... function __construct($options=null, $getid = '1') { $this->options = array(
$getid='1'
一切正常
require_once "../maincore.php";
$getid = '1';
class UploadHandler
{
protected $options;
// ...
function __construct($options=null, $getid = '1') {
$this->options = array(
'script_url' => 'myfile/'.$getid.'/',
// ...
如果我像这样键入$getid=$userdata['user\u id']
或者我把一些东西放到类中,比如$myid=$userdata['user_id']
并设置$getid=$myid
那什么都不管用。我已经试了很长一段时间了。
红色教程和什么是私有函数等等
还尝试了私有$myid=$userdata['user_id']代码>和var$myid=$userdata['user_id']代码>
因此,我只想获取$userdata['user\u id']
的数据,但我无法使其正常工作。在我看来,您似乎试图将全局变量指定为方法参数的默认值。。。这是不可能做到的。原因有很多,但目前最重要的是,这与OOP的主要思想相矛盾:OOP的要点是,无论发生什么,您都不需要多次编写代码:
class My_DB_Object
{
private $_connection = null;
public function __construct($dbType = 'mysql', array $loginParams = array())
{
switch(strtolower($dbType))
{
case 'mysql':
return $this->constructMySQL($loginParams);
case 'pgsql':
return $this->constructPGSql($loginParams);
case 'mssql':
return $this->constructMSSQL($loginParams);
default:
throw new InvalidArgumentException($dbType.' is not supported, yet?');
}
}
private function constructMySQL(array $loginParams)
{
//and so on...
}
}
这个对象可以在您的所有项目中使用,不管您要使用什么数据库,它可能定义了一个select
方法,该方法处理不同数据库的不同查询方式,而无需一次又一次地重写同一查询
无法保证您试图指定为默认值的变量会被设置,或者在范围内:您可能会在另一个对象的成员函数内创建一个新实例,该实例也可能位于完全不同的命名空间中
基本上:默认值是硬编码的
文件包含类定义或生成输出的代码,您的代码段似乎同时包含这两种功能。
您的代码应该如下所示:
require_once('UploadHandler.php');//or look into __autload()
$uploadInstance = new UploadHandler(null, $userdata['user_id']);
<?php
class UploadHandler
{
protected $options = null;
public function __construct (array $options = array(), $getid = '1')
{//assuming $options should be an array
$this->options = $options;
$this->options['script_url'] = 'myfile/'.$getid.'/';
}
}
//no closing ?> tag!
其中,UploadHandler.php
文件应如下所示:
require_once('UploadHandler.php');//or look into __autload()
$uploadInstance = new UploadHandler(null, $userdata['user_id']);
<?php
class UploadHandler
{
protected $options = null;
public function __construct (array $options = array(), $getid = '1')
{//assuming $options should be an array
$this->options = $options;
$this->options['script_url'] = 'myfile/'.$getid.'/';
}
}
//no closing ?> tag!
标签!
您必须将数据传递到类中或注入数据(另一个主题):
构建类时,您将告诉类值是什么
//some place in your code
$userdata = array(...some data from somewhere ...);
//$options is optional but at the beginning of the args so the 'null' is required
$class = new UploadHandler(null, $userdata['user_id']);
在函数参数的末尾添加可选参数通常很有帮助:
class UploadHandler
{
protected $options;
// ...
// Required params first then optional params
function __construct($getid ,$options=null) {
$this->options = array(
'script_url' => 'myfile/'.$getid.'/',
然后构建类:
//some place in your code
$userdata = array(...some data from somewhere ...);
//$options is now optional and at the end so the default value will be 'null'
$class = new UploadHandler($userdata['user_id']);
什么是$userdata
?它不存在于您的代码中…$userdata的输出是什么,要获得它的输出,请像var_dump($userdata)那样编写;让我们知道结果