DMG Posted October 19, 2008 Report Share Posted October 19, 2008 Pat nezinu kā to pareizāk noformulēt, lai nebūtu pārpratumu, tāpēc nepārmetiet, bet vienkārši jautājiet, ja rodas neskaidrības ;) Tātad jautājums būtībā ir tāds: vai programmiski ir iespējams izveidot jaunu klasi, lai tās atribūts saturētu kādu padotu vērtību? Vienkārši man ir tāds uzdevums dots, kur ir jau pāris klases jādefinē un jāparedz iespēju, ka atkarībā no ievadītajām vērtībām var būt nepieciešama vēl kāda vai vairākas klases. Link to comment Share on other sites More sharing options...
bubu Posted October 19, 2008 Report Share Posted October 19, 2008 Klaseem var taisiit konstruktoru, kuram padot veertiibu, taisot jaunu objektu: http://lv.php.net/__construct Link to comment Share on other sites More sharing options...
DMG Posted October 19, 2008 Author Report Share Posted October 19, 2008 Bet man nevajag jaunu objektu bet jaunu klasi Link to comment Share on other sites More sharing options...
xPtv45z Posted October 19, 2008 Report Share Posted October 19, 2008 http://lv.php.net/manual/en/language.oop5.php#84292 Link to comment Share on other sites More sharing options...
DMG Posted October 19, 2008 Author Report Share Posted October 19, 2008 xPtv45z: es zinu, ka visu ko var panākt, bez jaunas klases konstruēšanas, bet man ir konkrēts uzdevums "Panākt, lai jaunas klases nepieciešamības gadījumā tas neprasītu izmaiņas sistēmas kodā". Un tāpēc jautāju idejas, kā to varētu panākt ;) Link to comment Share on other sites More sharing options...
codez Posted October 19, 2008 Report Share Posted October 19, 2008 Paņem uzģenerē klases koda stringu un izpārsē ar eval: http://lv2.php.net/eval Link to comment Share on other sites More sharing options...
Toms Posted October 19, 2008 Report Share Posted October 19, 2008 Nav domāts extends? Link to comment Share on other sites More sharing options...
v3rb0 Posted October 20, 2008 Report Share Posted October 20, 2008 (edited) gan jau ka nevajag šitā, bet kā sapratu, tā ar atbilde: fails ./extra_methods/bar.php <?php function bar($self, $a, $b) { return ($a + $b) * $self->c; } fails ./foo.php <?php class Foo { public $c; public function __construct($c) { $this->c=$c; } public function __call($what, $with=array()) { include_once('extra_methods/'.$what.'.php'); return call_user_func_array($what, array_merge(array($this), $with)); } } // ---------------- $foo = new Foo(3); echo $foo->bar(1,2); // (1 + 2) * 3 = 9 Edited October 20, 2008 by v3rb0 Link to comment Share on other sites More sharing options...
xPtv45z Posted October 20, 2008 Report Share Posted October 20, 2008 Varbūt - http://lv.php.net/manual/en/language.oop5.autoload.php ? :) Link to comment Share on other sites More sharing options...
Recommended Posts