错误:找不到类(Error: Class not found)
我在PHP中使用类库相当新。 我有来自https://code.google.com/archive/p/php-sql-parser/的PHPSQLParser
我的代码如下所示:
myProgram.php
<?php header('Content-Type: application/json'); require_once($_SERVER['DOCUMENT_ROOT'] . '/../PHP/includes/PHP-SQL-Parser/src/PHPSQLParser/PHPSQLParser.php'); $sql='SELECT description FROM model WHERE ModelId = "79876"'; $parser = new PHPSQLParser($sql); echo json_encode($parser->parsed); ?>
我收到以下错误:
PHP Fatal error: class 'PHPSQLParser' not found in myProgram.php on line 5
我知道
require_once()
正在工作,因为(1)我没有收到错误,并且(2)我暂时插入(并且已经删除)一个echo "hello";
在类文件中它确实回应了这个短语。我不确定如何解决错误。 我应该在这找什么?
PHPSQLParser的类文件如下:
PHPSQLParser.php
<?php /** * PHPSQLParser.php * * A pure PHP SQL (non validating) parser w/ focus on MySQL dialect of SQL * * PHP version 5 * * LICENSE: * Copyright (c) 2010-2014 Justin Swanhart and André Rothe * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * @author André Rothe <andre.rothe@phosco.info> * @copyright 2010-2014 Justin Swanhart and André Rothe * @license http://www.debian.org/misc/bsd.license BSD License (3 Clause) * @version SVN: $Id: PHPSQLParser.php 1327 2014-04-15 11:17:49Z phosco@gmx.de $ */ namespace PHPSQLParser; use PHPSQLParser\positions\PositionCalculator; use PHPSQLParser\processors\DefaultProcessor; use PHPSQLParser\utils\PHPSQLParserConstants; require_once dirname(__FILE__) . '/positions/PositionCalculator.php'; require_once dirname(__FILE__) . '/processors/DefaultProcessor.php'; require_once dirname(__FILE__) . '/utils/PHPSQLParserConstants.php'; /** * This class implements the parser functionality. * * @author Justin Swanhart <greenlion@gmail.com> * @author André Rothe <arothe@phosco.info> * @license http://www.debian.org/misc/bsd.license BSD License (3 Clause) */ class PHPSQLParser { public $parsed; /** * Constructor. It simply calls the parse() function. * Use the public variable $parsed to get the output. * * @param String $sql The SQL statement. * @param boolean $calcPositions True, if the output should contain [position], false otherwise. */ public function __construct($sql = false, $calcPositions = false) { if ($sql) { $this->parse($sql, $calcPositions); } } /** * It parses the given SQL statement and generates a detailled * output array for every part of the statement. The method can * also generate [position] fields within the output, which hold * the character position for every statement part. The calculation * of the positions needs some time, if you don't need positions in * your application, set the parameter to false. * * @param String $sql The SQL statement. * @param boolean $calcPositions True, if the output should contain [position], false otherwise. * * @return array An associative array with all meta information about the SQL statement. */ public function parse($sql, $calcPositions = false) { $processor = new DefaultProcessor(); $queries = $processor->process($sql); // calc the positions of some important tokens if ($calcPositions) { $calculator = new PositionCalculator(); $queries = $calculator->setPositionsWithinSQL($sql, $queries); } // store the parsed queries $this->parsed = $queries; return $this->parsed; } /** * Add a custom function to the parser. no return value * * @param String $token The name of the function to add * * @return null */ public function addCustomFunction($token) { PHPSQLParserConstants::getInstance()->addCustomFunction($token); } /** * Remove a custom function from the parser. no return value * * @param String $token The name of the function to remove * * @return null */ public function removeCustomFunction($token) { PHPSQLParserConstants::getInstance()->removeCustomFunction($token); } /** * Returns the list of custom functions * * @return array Returns an array of all custom functions */ public function getCustomFunctions() { return PHPSQLParserConstants::getInstance()->getCustomFunctions(); } } ?>
I'm fairly new to using class libraries in PHP. I have the PHPSQLParser from https://code.google.com/archive/p/php-sql-parser/
My code looks like this:
myProgram.php
<?php header('Content-Type: application/json'); require_once($_SERVER['DOCUMENT_ROOT'] . '/../PHP/includes/PHP-SQL-Parser/src/PHPSQLParser/PHPSQLParser.php'); $sql='SELECT description FROM model WHERE ModelId = "79876"'; $parser = new PHPSQLParser($sql); echo json_encode($parser->parsed); ?>
I'm getting the following error:
PHP Fatal error: class 'PHPSQLParser' not found in myProgram.php on line 5
I know the
require_once()
is working because (1) I'm not getting an error from it, and (2) I temporarily inserted (and have since removed) anecho "hello";
in the class file and it did echo the phrase.I'm not sure how to resolve the error. What should I be looking for here?
The class file for PHPSQLParser is as below:
PHPSQLParser.php
<?php /** * PHPSQLParser.php * * A pure PHP SQL (non validating) parser w/ focus on MySQL dialect of SQL * * PHP version 5 * * LICENSE: * Copyright (c) 2010-2014 Justin Swanhart and André Rothe * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * @author André Rothe <andre.rothe@phosco.info> * @copyright 2010-2014 Justin Swanhart and André Rothe * @license http://www.debian.org/misc/bsd.license BSD License (3 Clause) * @version SVN: $Id: PHPSQLParser.php 1327 2014-04-15 11:17:49Z phosco@gmx.de $ */ namespace PHPSQLParser; use PHPSQLParser\positions\PositionCalculator; use PHPSQLParser\processors\DefaultProcessor; use PHPSQLParser\utils\PHPSQLParserConstants; require_once dirname(__FILE__) . '/positions/PositionCalculator.php'; require_once dirname(__FILE__) . '/processors/DefaultProcessor.php'; require_once dirname(__FILE__) . '/utils/PHPSQLParserConstants.php'; /** * This class implements the parser functionality. * * @author Justin Swanhart <greenlion@gmail.com> * @author André Rothe <arothe@phosco.info> * @license http://www.debian.org/misc/bsd.license BSD License (3 Clause) */ class PHPSQLParser { public $parsed; /** * Constructor. It simply calls the parse() function. * Use the public variable $parsed to get the output. * * @param String $sql The SQL statement. * @param boolean $calcPositions True, if the output should contain [position], false otherwise. */ public function __construct($sql = false, $calcPositions = false) { if ($sql) { $this->parse($sql, $calcPositions); } } /** * It parses the given SQL statement and generates a detailled * output array for every part of the statement. The method can * also generate [position] fields within the output, which hold * the character position for every statement part. The calculation * of the positions needs some time, if you don't need positions in * your application, set the parameter to false. * * @param String $sql The SQL statement. * @param boolean $calcPositions True, if the output should contain [position], false otherwise. * * @return array An associative array with all meta information about the SQL statement. */ public function parse($sql, $calcPositions = false) { $processor = new DefaultProcessor(); $queries = $processor->process($sql); // calc the positions of some important tokens if ($calcPositions) { $calculator = new PositionCalculator(); $queries = $calculator->setPositionsWithinSQL($sql, $queries); } // store the parsed queries $this->parsed = $queries; return $this->parsed; } /** * Add a custom function to the parser. no return value * * @param String $token The name of the function to add * * @return null */ public function addCustomFunction($token) { PHPSQLParserConstants::getInstance()->addCustomFunction($token); } /** * Remove a custom function from the parser. no return value * * @param String $token The name of the function to remove * * @return null */ public function removeCustomFunction($token) { PHPSQLParserConstants::getInstance()->removeCustomFunction($token); } /** * Returns the list of custom functions * * @return array Returns an array of all custom functions */ public function getCustomFunctions() { return PHPSQLParserConstants::getInstance()->getCustomFunctions(); } } ?>
原文:https://stackoverflow.com/questions/35443854
最满意答案
对你所代表的价值做一些数学计算:
4*16^-1 + 5*16^2 = 4/16 + 5/256 = 2/8 + 4/256 + 1/256 = 2/8 + 1/64 + 2/512 = 2*8^-1 + 1*8^-2 + 2*8^-3
所以,是的,0.45 hex相当于0.212 octal。
Doing some math on the value you are representing:
4*16^-1 + 5*16^2 = 4/16 + 5/256 = 2/8 + 4/256 + 1/256 = 2/8 + 1/64 + 2/512 = 2*8^-1 + 1*8^-2 + 2*8^-3
So, yes, 0.45 hex is equivalent to 0.212 octal.
相关问答
更多-
对你所代表的价值做一些数学计算: 4*16^-1 + 5*16^2 = 4/16 + 5/256 = 2/8 + 4/256 + 1/256 = 2/8 + 1/64 + 2/512 = 2*8^-1 + 1*8^-2 + 2*8^-3 所以,是的,0.45 hex相当于0.212 octal。 Doing some math on the value you are representing: 4*16^-1 + 5*16^2 = 4/16 + 5/256 ...
-
简单的方法: 通过减去ASCII'0 '0'或'A'转换hex - > 8bit整数,然后从第一个数字左移4bit值,并从第二个数字左移4 bit值。 然后通过移位/屏蔽将该8位整数转换为八进制以提取所需的三组位,并为每一位添加'0' 。 更复杂的方式:不要在任何点组合成单个8位整数。 有许多方法可以将第一个十六进制数字中的第4位与第二个十六进制数字中的低两位相结合。 您最好的选择可能仍然涉及OR。 如果您实际上是以8086为目标,而不仅仅是普通的x86,那么逐个移位和按CL移动是您可用的唯一转换。 因此, ...
-
Byte[] data = { 116, 4, 228, 18, 189, 145, 31, 7, 123, 74, 174, 151, 54, 144, 224, 49, 210, 169, 43, 213}; var str = String.Join("", data.Select(b => Convert.ToString(b,8).PadLeft(3,'0'))); - //First hex string to byte array string hex = "7404E412BD911F07 ...
-
Integer.toString(int,int)和Integer.parseInt(String,int)执行此操作... Integer.toString(int,int) and Integer.parseInt(String,int) do this...
-
使用python脚本将十六进制,八进制数转换为十进制形式(converting hexadecimal , octal numbers into decimal form using python script)[2023-06-29]
这里有一些混淆 - 迂回地(用电脑总是最好是迂腐;-),没有“八进制数字”,有字符串是数字的八进制表示 (和其他字符串,更常见的是他们的字符串十进制表示,十六进制表示)。 底层数字(整数)与任何表示都是完全不同的类型(默认情况下显示其十进制表示) - 例如: >>> 2 + 2 4 >>> '2' + '2' '22' 引号表示字符串(即表示) - 并且注意,它们本身与它们可能表示的数字无关。 所以,解释你的问题的一种方法是你想要将八进制表示转换成十进制表示(等等) - 那将是: >>> str(int( ... -
将十六进制转换为二进制,填充以使二进制字符串长度为3的倍数,然后将二进制转换为八进制: func hexadecimalFractToOctal(_ hex: String) -> String { let hexToBin = ["0": "0000", "1": "0001", "2": "0010", "3": "0011", "4": "0100", "5": "0101", "6": "0110", "7": "0111", ...
-
只需使用Kernel#sprintf格式化数字。 喜欢这个 x = 20 y = sprintf('\%03o', x) puts y 产量 \024 更新 也许我误解了你。 如果你只想要一个具有给定代码点的字符,那么只需使用Integer#chr 。 喜欢这个 x = 20 y = x.chr p y 产量 "\x14" Just use Kernel#sprintf to format the number. Like this x = 20 y = sprintf('\%03o', x) ...
-
你做的是 检查-在开始时记住这个以后再说。 将数字转换为long数就好了. 不在那里。 记得在哪里. 最后除以8 ^(n),其中n是小数位数。 你可以用>>来代替。 或者甚至更好地使用Math.scaleb(num, scale) 如果号码已签名,请重新添加该号码。 What you do is check for - at the start and remember this for later. convert the number into a long as if the . wasn't the ...
-
最快的方法是将二进制数从右端分成3位块,根据需要从左侧填充0,然后将每个块转换为八进制数字。 例如, 1000100000001011 -> 001 000 100 000 001 011 [2 0's added to the left] -> 1 0 4 0 1 3 -> 104013 The quickest method is to break the binary number into 3-bit ch ...
-
根据注释中的讨论,您希望单独转换每个字节并将它们转换为八进制: String s = "My string to convert"; byte[] bytes = s.getBytes("UTF-8"); for (byte b : bytes) { String octalValue = Integer.toString(b, 8); // Do whatever } As per the discussion in the comments, you want to con ...