• 締切済み

PHP5.2.6でのDOMDocumentのloadメソッド

ggaoggの回答

  • ggaogg
  • ベストアンサー率43% (38/88)
回答No.2

::修正:: DOMDocument::load($xmlFilename) でした。(つまり引数は文字列じゃなくてファイル名)

masa6272
質問者

お礼

解決しました。 msiでインストールしたのですが、そのときにextにdomxmlを入れてました。 いりそうでしたので・・・ それが、悪さをしていたみたいです。

masa6272
質問者

補足

ありがとうございます。 Moodleは、教育用のソフトでして、他のホストでは問題なく動いています。 staticな呼び出しですか。。。 会社に行ったら、試してみます。

関連するQ&A

  • PHPのエラー表記についてしつもんです。

    PHPスクリプトを実行すると 如何のようなエラーが表示されます。 Warning: Unexpected character in input: ' ' (ASCII=12) state=0 in /usr/local/apache/htdocs/class.php on line 313 //実際に、エラーのある箇所が以下になります。 //ちょうど【var_dump($this instanceof ParentClass);】が該当するようです。 class ParentClass{ //ParentClass定義内の$this が ParentClass であるかどうかを確認するメソッド public function superCheckThisType(){ print "ParentClassであるかどうか?"; print get_class($this); var_dump($this instanceof ParentClass); } } お分かりになるかた ご教授ください。

    • ベストアンサー
    • PHP
  • 継承クラスで定義したメソッドのtry-catch文

    親クラスで、子クラスで実装されたメソッドのExceptionをキャッチしたいのですが、 うまくいきません。 何か良い方法はないでしょうか? abstract class A { public __construct(){ try{ $this->testA(); }catch(Exception $e){ var_dump(1); } } abstract function testA(); } class B extends A { function testA(){ throw Exception('test',1); } } try{ new B; }catch(Exception $e){ var_dump(2); // こっちが動く } よろしくお願いします。

    • ベストアンサー
    • PHP
  • デフォルトの定義済みクラスについて

    自分で定義したクラスの継承関係やらを出力するサンプルスクリプトがあったので、それをまる写しして動かしたところ、エラーがおこりました。以下のスクリプトがそれです。 <?php function get_methods($object){ $methods=get_class_methods(get_class($object)); if(get_parent_class($object)){ $parent_methods=get_class_methods(get_parent_class($object)); $methods=array_diff($methods,$parent_methods); } return $methods; } function get_inherited_methods($object){ $methods=get_class_methods(get_class($object)); if(get_parent_class($object)){ $parent_methods=get_class_methods(get_parent_class($object)); $methods=array_intersect($methods,$parent_methods); } return $methods; function get_lineage($object){ if(get_parent_class($object)){ $parent=get_parent_class($object); $parent_object=new $parent; $lineage=get_lineage($parent_object); $lineage[]=get_class($object); } else{ $lineage=array(get_class($object)); } return $lineage; } function get_child_classes($object){ $classes=get_declared_classes(); $children=array(); foreach($classes as $class){ if(substr($class,0,2)=='__'){ //ここに問題があるようです。 continue; } $child=new $class; //ここで「引数が無効」のエラーになります。 if(get_parent_class($child)==get_class($object)){ $children[]=$class; } } return $children; } function print_object_info($object){ $class=get_class($object); echo '<h2>クラス</h2>'; echo "<p>$class</p>"; echo '<h2>継承関係</h2>'; echo '<h3>親クラス</h3>'; $lineage=get_lineage($object); array_pop($lineage); echo count($lineage)?('<p>'.join(' -&gt; ',$lineage).'</p>'):'<i>None</i>'; echo '<h3>子クラス</h3>'; $children=get_child_classes($object); echo '<p>'.(count($children)?join(',',$children):'<i>None</i>').'</p>'; echo '<h2>メソッド</h2>'; $methods=get_class_methods($class); $object_methods=get_methods($object); if(!count($methods)){ echo "<i>なし</i><br/>"; } else{ echo '<p>継承しているメソッドは、<i>斜体</i>で表示します。</p>'; foreach($methods as $method){ echo in_array($method,$object_methods)?"<b>$method</b>();<br/>":"<i>$method</i>();<br/>"; } } echo '<h2>プロパティ</h2>'; $properties=get_class_vars($class); if(!count($properties)){ echo "<i>なし</i><br/>"; } else{ foreach(array_keys($properties) as $property){ echo "<b>\$$property</b>=".$object->$property.'<br/>'; } } echo '<hr/>'; } //省略しましたがここにクラスA、B、Cを用意しました。 $a=new A; $a->foo='sylvie'; $a->bar=23; $b=new B; $b->foo='bruno'; $b->quux=true; $c=new C; print_object_info($a); print_object_info($b); print_object_info($c); ?> これを実行すると途中からエラーになります。$classがどんな値か出力するために、 foreach($classes as $renban=>$class){ print_r("{$renban}:{$class}\n<br/>"); } にして出力したら、 0:stdClass …… 139:A 140:B 141:C になりました。(get_declared_classes()が返す値は、スクリプト内で自分が定義したクラス以外に、PHPがデフォルトで定義しているクラスもあることに、昨日気づきました。) 本を書いた人は、foreach文の直後の if(substr($class,0,2)=='__'){ continue; } の所でデフォルトの定義済みクラスを除外する目的だったと思います。 ここを、 foreach($classes as $class){ if(substr($class,0,1)!='A||B||C'){ continue; } に変えたらちゃんと画面が表示されました。 本を書いた人はなぜ、if(substr($class,0,2)=='__')にしたのでしょうか?また、if(substr($class,0,1)!='A||B||C')だとあらかじめ自分が定義しているクラスを記述しているのでなにかぱっとしない感じがします。自分が定義したクラス以外を除外という書き方でなく、デフォルトの定義済みクラスをうまく除外する方法などございましたらアドバイスの方よろしくお願いします。 こちらの環境は、windows vistaにxampp1.6.5、php5.2.5です。よろしくお願いします。

    • ベストアンサー
    • PHP
  • 'DOMDocument' not found

    wordpress にてサイト構築しておりますが、先日 テーマファイルを購入し、設置してみると Fatal error: Class 'DOMDocument' not found in /var/www/html/domain.com/wp-content/themes/goodspace/include/function-regist.php on line 53 と表示されました。 ■環境 さくらVPS php5.3.17 php-xml もインストール済みなんですが、 この表示がきえません。 ご教授いただければ幸いです。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • PHPでサブクラスからスーパクラスのprivate

    メンバにアクセスできる件について PHPでスーパークラスで定義したprivateのメンバにサブクラスからアクセスできる件について 質問です。 class TestClass { private $value01 = "スーパークラスの private メンバ"; public function testMethod01 () { print "スーパークラスのパブリックメソッド"; print "<h1>{$this->value01}</h1>"; } protected function testMethod02(){ print "スーパークラスの protected メソッド"; } private function testMethod03(){ print "スーパークラスの private メソッド"; } public function getMethodList(){ print_r(get_class_methods($this)); } } class ExClass extends TestClass{ private $value01 = "サブクラスの private メンバ"; } $obj = new ExClass(); $obj-> testMethod01(); と上記のようにサブクラスのインスタンスから継承したpublicなメソッド testMethod01()を実行すると スーパークラスのprivateなプロパティにアクセスできてしまいます。 これってどういうことでしょうか?privateメンバってそのクラスの中からだけしかアクセスできませんよね? 上記では、サブクラスからアクセスしているような状態にみえますがどういうことでしょうか? ご教授御願い致します。

    • ベストアンサー
    • PHP
  • プロパティにスタティックメソッドを入れられますか?

    質問です、よろしくお願いします。 以下のようなクラスを書いたのですが class test extends aaa { $base_dir = Zend_Registry::get('base'); // 親クラスなど上位の処理何かしらの値が入っているとします public static function index() { return $this->base_dir; } } $test_index = test::index; print $test_index; =============================================== 上記のような簡単なクラスだとして Parse error: parse error in ディレクトリ ~~~ といったエラーがでます エラー行は、この例ですと $base_dir = Zend_Registry::get('base'); のところです。 Zend_Registryのせいなのか、他のスタティックメソッドでも同じなのかわかりませんが 何故エラーになるのかがわかりません・・・ php.iniの設定なのかとも疑ってみましたがそれらしいところは見付かりませんでした。 プロパティにスタティックメソッドをいれることができないということならスッキリ理解できるのですが、そんな話も聞いたことは無かったので、質問させていただきました。 PHPのバージョンは5.2.8です わかりづらい説明で申し訳ありませんがお願いします

    • ベストアンサー
    • PHP
  • クラスのメソッド

    inidat.phpに$global_a=3;と書いてありますがクラス内でこれが得られません。 <?php require_once 'inidat.php'; class test5 { var $a; function test5() { $this->a = 'inidat-a=' . $global_a; } } ?>

    • 締切済み
    • PHP
  • これはphpのリファレンスマニュアルからなんですが

    これはphpのリファレンスマニュアルからなんですが、 なぜ出力結果がdoubleではなく、floatなんでしょうか? <?php $b = 3.1; $c = true; var_dump($b, $c); ?> float(3.1) bool(true)

    • ベストアンサー
    • PHP
  • phpにおいて、クラスのメソッド名を定義する際に、

    phpにおいて、クラスのメソッド名を定義する際に、 メソッド名を変数で与えることはできないのでしょうか? 例えば、下記のようなものを考えています。 class ClassA { foreach( array('AA', 'BB', 'CC') as $val ) { function set{$val}($arg) { $arg = $arg + 1; return $arg; } } しかし、これではうまくいかないようです。 一方、メソッドを用いるときには、 このような変数展開ができるようです。 ですので、定義のときにもやり方があるのでは・・?と思い、 質問させていただきました。 宜しくお願い致しましう。

    • ベストアンサー
    • PHP
  • こんにちは、PHP初心者です。

    こんにちは、PHP初心者です。 Smartyを利用してWebサイトを構築中です。 Smarty.classの派生クラスを作成し、コンストラクタ内でDB接続オブジェクトを privateプロパティ($_db)に設定しているのですが$_dbの値が アクセサメソッドを通じてgetすると空白になってしまいます。 色々やってみましたが理由が分からず、 ためしにコンストラクタ内でクエリを実行したところテーブルから値を取得できました。 なぜコンストラクタ外に出るとprivateプロパティの値が取得できなくなるのか分かりません。 どなたかご教示ください。 どうぞよろしくお願いします。 下記ソースです。 *(Smarty.classの派生クラス)********************************************** <?php require_once("DB.php"); require_once("Smarty.class.php"); class MySmarty extends Smarty{ private $_db; public function __construct(){ parent::__construct(); $this->template_dir="C:/xampp/modules/access_control/templates"; $this->compile_dir="C:/xampp/modules/access_control/templates_c"; $this->config_dir="C:/xampp/config"; $this->config_load("access_control.conf",basename($_SERVER['SCRIPT_NAME'],".php")); $tihs->_db=DB::connect($this->get_config_vars('db_string')); if (PEAR::isError($db)) { die($db->getMessage()); } } public function __destruct(){ $this->_db->disconnect(); } public function get_db(){return $tihs->_db;} } ?> *********************************************** *(メインのPHP)********************************************** <?php require_once("../../modules/access_control/class/MySmarty.class.php"); require_once("../../modules/access_control/class/name_search.class.php"); $o_smarty=new MySmarty(); $db=$o_smarty->get_db(); ←ここで値が取得できない $o_smarty->assign("toolname",name_search::getToolName($db)); $o_smarty->display(basename($_SERVER['SCRIPT_NAME'],".php").".tpl"); ?> ***********************************************

    • ベストアンサー
    • PHP