我正在尝试编写PDO包装器,但我在构造函数方面遇到了一些问题.理想情况下,我想调用父的构造函数,但由于某种原因,这是行不通的.我尝试(测试)检查是否创建了一个新的PDO并且确实有效,我觉得最令人困惑.
这是我的代码:
class db extends PDO {
private $dbconn;
public function __construct() {
$dsn = 'mysql:dbname=' . MYSQL_DB . ';host=' . MYSQL_HOST;
$user = MYSQL_USER;
$pw = MYSQL_PW;
try {
$this->dbconn = parent::__construct($dsn, $user, $pw);
$this->dbconn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $this->dbconn;
}
catch(PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();;
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我更换parent::线路,它的工作原理$this->dbconn = new PDO($dsn, $user, $pw);
我相信"正确/优雅"的方法是使用parent::语法,所以我想知道为什么这不起作用/如何解决它.有人可以帮忙吗?
谢谢!
我有一些Javascript给我带来了问题.
我希望这个页面上的地球继续旋转:http://www.davidsgorbati.co.uk/testarea/cbdesign.co.uk/canvas_experiments/animate_3.php
不幸的是,在12次迭代之后,它停止了...我已经尝试过所有种类,但似乎没有任何效果.
这是它的代码:
<title>Javascript Demos</title>
<script src="js/jquery.min.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
$(document).ready(function() {
var c = document.getElementById("myCanvas");
var cxt = c.getContext("2d");
var refAngle = 0;
setInterval(progressMeridien,100);
function progressMeridien() {
c.width = c.width
cxt.beginPath();
cxt.arc(300, 300, 300, 0, Math.PI * 2, true);
cxt.closePath();
cxt.strokeStyle = "rgba(150, 119, 78, 0.6)";
cxt.stroke();
for (var i = 0; i<12; i++) {
var angle = (refAngle + i*(Math.PI/12)) % Math.PI;
cxt.beginPath();
cxt.moveTo(300, 0); // A1
var r = 390 - Math.sin(angle) …Run Code Online (Sandbox Code Playgroud) canvas ×1
constructor ×1
html5 ×1
javascript ×1
jquery ×1
loops ×1
parent ×1
pdo ×1
php ×1
wrapper ×1