GVKun编程网logo

PHP未定义的常量错误没有意义(php未定义的常量错误没有意义怎么办)

10

本文将介绍PHP未定义的常量错误没有意义的详细情况,特别是关于php未定义的常量错误没有意义怎么办的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于C

本文将介绍PHP未定义的常量错误没有意义的详细情况,特别是关于php未定义的常量错误没有意义怎么办的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于CakePHP未定义索引错误、ErrorException: 在 fil 中使用未定义的常量锻炼_c(这将在 PHP 的未来版本中引发错误)、Flutter:有没有办法从类中定义的常量中选择一个随机常量?、PDO代码和PHP未定义错误的知识。

本文目录一览:

PHP未定义的常量错误没有意义(php未定义的常量错误没有意义怎么办)

PHP未定义的常量错误没有意义(php未定义的常量错误没有意义怎么办)

我真的希望我在这里错过了一些简单的东西,但是我在 PHP中使用类常量遇到了一个奇怪的问题.我创建了一个名为Utils的简单类,并添加了两个类常量CRYPT_SALT和LOGIN_PAGE.我从其他文件中引用了这些文件,并且它们有效.然后我又添加了五个类常量,它们不起作用.我在/var/www/modx/test.PHP上获得了“致命错误:未定义的类常量”,其中一个是新的常量,并且是我尝试使用它的行.

这是Utils类:

<?PHP
// 
// Utils.PHP
//  
// This class is a collection of static utility functions.  Since the methods are static,they should
// all be invoked with:
//
//  Utils::methodName();
//
// This class also contains global constants,which are *not* kept in Config.  They should be accessed with:
//
//  Utils::CONSTANT;
// 
// addToCSVString -- adds an incoming string to a CSV string,possibly prepending a comma and space.  Returns
// addToJSONString -- adds an incoming key/value pair to a JSON string
// jsonify -- takes in a string and replaces control characters and quotes with properly
//

require_once( "logger.PHP" );

class Utils {

        // Constants 

    const CRYPT_SALT    = '$6$';
    const LOGIN_PAGE    = '/modx/';

        // Session keys

    const SKEY_DEBUG    = 'debug';
    const SKEY_LOGIN    = 'login';
    const SKEY_LANG     = 'curLang';
    const SKEY_UID      = 'userID';
    const SKEY_LOGGER   = 'logger';


        // Members

    public static $debug    = false;

        // Methods

    //
    // addToCSVString -- adds an incoming string to a CSV string,possibly prepending a comma and space.  Returns
    // the new string
    //
    public static function addToCSVString( $csvString,$newVal ) {
        if ( strlen( $csvString ) > 0 ) {
            $csvString  .= ",";
        }

        return $csvString . $newVal;
    }


    //
    // addToJSONString -- adds an incoming key/value pair to a JSON string
    //
    public static function addToJSONString( $jsonString,$key,$val ) {
        $debug      = self::$debug;

        if ( $debug ) {
            $logger = Logger::singleton();
            $logger->log( "In Utils::addToJSONString" );
            $logger->log( "\$key = [$key]",1 );
            $logger->log( "\$val = [$val]",1 );
        }

        if ( strpos( $val,"{" ) === false ) {

            if ( $debug ) {
                $logger->log( "Utils: this is a plain value",1 );
            }
                // Val is a string

            $val    = self::jsonify( $val );

            return self::addToCSVString( $jsonString,"\"" . $key . "\" : \"" . $val . "\"" );
        } else {
            if ( $debug ) {
                $logger->log( "this is a JSON object",1 );
            }

                // Val is a JSON object

            return self::addToCSVString( $jsonString,"\"" . $key . "\" : " . $val . "" );
        }
    }


    //
    // jsonify -- takes in a string and replaces control characters and quotes with properly
    // escaped JSON values
    //
    public static function jsonify( $val ) {
        $val    = str_replace( '\\','\\\\',$val );        // convert backslashes first 
        $val    = str_replace( "\n",'\\n',$val );
        $val    = str_replace( "\r",'\\r',$val );
        $val    = str_replace( "\t",'\\t',$val );
        $val    = str_replace( "\v",'\\v',$val );
        $val    = str_replace( "\f",'\\f',$val );
        $val    = str_replace( "\n",$val );

        return $val;
    }


}

?>

在添加类常量之前,所有成员函数都已编写和测试,它们正在工作.

这里是test.PHP,一个简单的测试页面来说明问题:

<h1>Test.PHP</h1>

<?PHP

    // Set up autoloader

spl_autoload_extensions( '.PHP,.inc' );
spl_autoload_register();

    // Test class constants

echo "<b>Testing Utils class constants</b></br>\n"; 
echo 'Utils::CRYPT_SALT = [' . Utils::CRYPT_SALT . "]<br>\n";
echo 'Utils::LOGIN_PAGE = [' . Utils::LOGIN_PAGE . "]<br>\n";
echo 'Utils::SKEY_LOGGER = [' . Utils::SKEY_LOGGER . "]<br>\n";
echo 'Utils::SKEY_DEBUG = [' . Utils::SKEY_DEBUG . "]<br>\n";
echo 'Utils::SKEY_LOGIN = [' . Utils::SKEY_LOGIN . "]<br>\n";
echo 'Utils::SKEY_LANG = [' . Utils::SKEY_LANG . "]<br>\n";
echo 'Utils::SKEY_UID = [' . Utils::SKEY_UID . "]<br>\n";
echo "</br>\n";

?>

我从test.PHP得到的确切错误是:

Fatal error: Undefined class constant 'SKEY_LOGGER' in /var/www/modx/test.PHP on line 15

我尝试过以下方法来解决这个问题:

– 重命名常量,包括使用不带下划线的小写名称

– 更改声明的顺序.

– 从双引号改为单引号.

– 注释掉CRYPT_SALT和LOGIN_PAGE的声明

– 向我的同事展示这些代码,他们都是无能为力的

无论我尝试什么,CRYPT_SALT和LOGIN_PAGE工作,其他常量都不起作用.我担心我会遇到PHP类课程中的一些错误.或者也许我只是盯着这么久,以至于我错过了这个显而易见的事实.

解决方法

是,

答案是我像往常一样是个白痴.

总结

以上是小编为你收集整理的PHP未定义的常量错误没有意义全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

CakePHP未定义索引错误

CakePHP未定义索引错误

我正在尝试访问已登录用户的电子邮件地址,并且可以在我的所有Controller中成功完成访问,除了一个.

这是我遇到的错误

Notice (8): Undefined index: User [APP/View/Layouts/default.ctp, line 37]

这是对应的代码行(请记住,这在我的所有其他控制器中都有效).

<center><font color="black"><td><?PHP echo $user['User']['email']; ?></td></text></center>

这是DemosController

<?PHP
// app/Controller/DemosController.PHP
class DemosController extends AppController {

    public function beforeFilter() {
        parent::beforeFilter();
        $this->Auth->allow('add','logout');

        $user = $this->Demo->read(null, $this->Auth->user('id'));  //this throws the error
        //$user = $this->Demo->User->read(null, $this->Auth->user('id'));  //Fatal error: Call to a member function read() on a non-object in
        $this->set('user', $user);

    }

    //display the knockout table
    public function index($article = null) {

    }


}

我不需要数据库中的该控制器表.只是为了演示目的显示一个表.我可以让它引用用户吗?

class Demo extends AppModel {
    public $name = 'User';         
}

为什么我可以在除此控制器之外的所有控制器中访问它?模型/表情况是否引起错误?如果是这样,是否有一种方法可以禁止使用表?

解决方法:

通过AuthComponent获取登录用户的属性

您不必通过“ viewVar”将当前登录用户的信息传递给视图.
要访问控制器外部当前登录用户的属性,请使用AuthComponent的“静态”界面

在您的视图或布局中,输出如下信息:

<p>The current users email is: <?PHP echo AuthComponent::user('email') ?></p>
<p>The current users id is: <?PHP echo AuthComponent::user('id') ?></p>
<p>And all properties of the user are:</p>
<pre><?PHP print_r(AuthComponent::user());?></pre>

查看:Accessing the logged in user

您可以从beforeFilter()中删除这些行;

$user = $this->Demo->read(null, $this->Auth->user('id'));  //this throws the error
//$user = $this->Demo->User->read(null, $this->Auth->user('id'));  //Fatal error: Call to a member function read() on a non-object in
$this->set('user', $user);

ErrorException: 在 fil 中使用未定义的常量锻炼_c(这将在 PHP 的未来版本中引发错误)

ErrorException: 在 fil 中使用未定义的常量锻炼_c(这将在 PHP 的未来版本中引发错误)

你能试试这个吗:

ExerciseGroup::where('id',$exerciseGroup[0]->id)->increment('exercise_count');

Flutter:有没有办法从类中定义的常量中选择一个随机常量?

Flutter:有没有办法从类中定义的常量中选择一个随机常量?

带有 enum 的解决方案。

在下面,我定义了一个 SkinColor 枚举。然后,多亏了 Dart extension,我将每个 SkinColor 值的颜色代码定义为一个地图,以及一个 Color getter

我还添加了一个您可以从 static SkinColor get random 访问的 extension。这会给你一个随机的 SkinColor

import 'dart:math' show Random;
import 'dart:ui' show Color;

void main() {
  SkinColor randomSkinColor = SkinColor.values[Random().nextInt(SkinColor.values.length)];
  print(randomSkinColor.color);
  
  randomSkinColor = SkinColorX.random;
  print(randomSkinColor.color);
}

enum SkinColor  {
  tanned,yellow,pale,light,brown,darkBrown,black,}

extension SkinColorX on SkinColor {

  static const colors = {
    SkinColor.tanned : Color(0xFFFD9841),SkinColor.yellow : Color(0xFFF9D562),SkinColor.pale : Color(0xFFFFDBB4),SkinColor.light : Color(0xFFEDB98A),SkinColor.brown : Color(0xFFD08B5B),SkinColor.darkBrown : Color(0xFFAE5D29),SkinColor.black : Color(0xFF614335),};

  Color get color => colors[this];
  
  static SkinColor get random => SkinColor.values[Random().nextInt(SkinColor.values.length)];
  
}
,

带有 DelegatingMap 的解决方案

这是使用 DelegatingMap 的另一种解决方案。

enter image description here

SkinColor 定义为:

class SkinColor extends DelegatingMap<String,Color> {
  static const Map<String,Color> colors = {
    'tanned': Color(0xFFFD9841),'yellow': Color(0xFFF9D562),'pale': Color(0xFFFFDBB4),'light': Color(0xFFEDB98A),'brown': Color(0xFFD08B5B),'darkBrown': Color(0xFFAE5D29),'black': Color(0xFF614335),};

  Map<String,Color> get delegate => colors;

  static Color get random {
    return colors.values.elementAt(Random().nextInt(colors.values.length));
  }
}

而且用法非常基本:

SkinColor.colors; // List of all Colors as a `Map<String,Color>`
SkinColor()['tanned']; // A specific skin `Color`
SkinColor.random; // A random `Color`

完整源代码

import 'dart:math' show Random;

import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:quiver/collection.dart';

void main() {
  runApp(
    MaterialApp(
      debugShowCheckedModeBanner: false,title: 'Flutter Demo',home: HomePage(),),);
}

class HomePage extends HookWidget {
  @override
  Widget build(BuildContext context) {
    final _selected = useState(SkinColor.random);
    return Scaffold(
      body: Column(
        crossAxisAlignment: CrossAxisAlignment.stretch,children: [
          Container(
            padding: EdgeInsets.all(8),color: _selected.value,child: DropdownButtonFormField<Color>(
              items: SkinColor.colors
                  .map((name,color) {
                    return MapEntry(
                        name,DropdownMenuItem<Color>(
                          value: color,child: Text(name),));
                  })
                  .values
                  .toList(),value: _selected.value,onChanged: (newValue) => _selected.value = newValue,SizedBox(height: 2.0),Expanded(
            child: GridView.count(
              crossAxisCount: 5,childAspectRatio: 1,mainAxisSpacing: 2,crossAxisSpacing: 2,children: List.generate(
                50,(_) => ColoredBox(color: SkinColor.random),],);
  }
}

class SkinColor extends DelegatingMap<String,Color> get delegate => colors;

  static Color get random {
    return colors.values.elementAt(Random().nextInt(colors.values.length));
  }
}

PDO代码和PHP未定义错误

PDO代码和PHP未定义错误

我有这个代码连接到数据库

class dbConn{
public $dbname='database';
private $dbhost='localhost';
private $dbusername='username';
private $dbpassword='password';


protected static $db;
private function __construct() {

try {

self::$db = new PDO('MysqL:host='.$dbhost.';dbname='.$dbname,$dbusername,$dbpassword );
self::$db->setAttribute( PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $e) {

echo "Connection Error: " . $e->getMessage();
}

}


public static function getConnection() {


if (!self::$db) {

new dbConn();
}


return self::$db;
}

}




class MysqL{

    function showTables(){
                $db = dbConn::getConnection();

                $query=$db->query("show tables");

                $fetchArray = $query->fetchAll(PDO::FETCH_ASSOC);
                foreach($fetchArray as $index=>$val) {
                            echo $val;
                          }
    }
}

$obj=new MysqL;
$obj->showTables();

我面临的问题是,如果我直接将数据库登录详细信息用于pdo语句,如下所示:

self::$db = new PDO( 'MysqL:host=localhost;dbname=databasename','root','pass');

我没有任何问题.但是,如果我像上面所说的那样使用变量并将值存储到它们中.

Notice: Undefined variable: dbhost 

Notice: Undefined variable: dbname 

Notice: Undefined variable: dbusername 

Notice: Undefined variable: dbpassword

以下错误来了,另外在其他类中也无法连接到数据库.

谁能告诉我这个问题是什么?

解决方法

访问类属性时需要使用$this – $this是当前对象.

例:

try {
  self::$db = new PDO('MysqL:host='.$this->dbhost.';dbname='.$this->dbname,$this->dbusername,$this->dbpassword );
  self::$db->setAttribute( PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $e) {
  echo "Connection Error: " . $e->getMessage();
}

当你调用$dbhost时,你正在寻找当前范围内的变量,在本例中是构造函数.在这种情况下,$dbhost和$this-> dbhost是两个不同的东西.

今天的关于PHP未定义的常量错误没有意义php未定义的常量错误没有意义怎么办的分享已经结束,谢谢您的关注,如果想了解更多关于CakePHP未定义索引错误、ErrorException: 在 fil 中使用未定义的常量锻炼_c(这将在 PHP 的未来版本中引发错误)、Flutter:有没有办法从类中定义的常量中选择一个随机常量?、PDO代码和PHP未定义错误的相关知识,请在本站进行查询。

本文标签: