Log in

View Full Version : Visto che siamo in tema di programmazione... Devo chiedere chiarimento io



Mez
11th November 2011, 16:32
su php ho sempre fatto programmazione procedurale, ora spinto dalla scimmia e dalla curiosita stavo provando l'approccio all' oop, ma devo avere un paio di chiarimenti. Come mai non vedo stampato nulla a monitor con questa sequenza:

classe:


<?php
//classe Automobile
class Automobile{
var $Marchio, $Cilindri, $Colore;

Function setMarchio($StrMarchio){
$this->Marchio == $StrMarchio;
}

Function setCilindri($IntCilindri){
$this->Cilindri == $IntCilindri;
}

Function setColore($StrColore){
$this->Colore == $StrColore;
}

Function getInfo() {
$return = "Marchio:".$this->Marchio." Numero Cilindri:".$this->Cilindri." Colore:".$this->Colore;
return $return;
}
}
?>



file dove richiamo la classe:


<?php
//includo il file oop.php
require_once("Automobile.php");


$Mazda = new Automobile;

$Mazda->setMarchio("Mazda");
$Mazda->setCilindri("4");
$Mazda->setColore("Grigio");

echo $Mazda->getInfo();
?>


tutto ok niente errori, solo che non vedo i valori mazda/4/grigio -.-

sistema osx

edit: non mi tiene le indentazioni il forum, ma ci sono tutte

Rise-the-Sky
11th November 2011, 16:43
Controlla la classe Automobile...in particolare le 3 funzioni di set....in particolare la sintassi dell'assegnazione...

Eltarion
11th November 2011, 17:07
Controlla la classe Automobile...in particolare le 3 funzioni di set....in particolare la sintassi dell'assegnazione...

:hidenod:

Mez
11th November 2011, 18:13
@eltario & rise: grazie, non me ne ero accorto del doppio ==
:D

Mez
18th November 2011, 01:22
up:
una costante dentro ad una classe, posso utilizzarla quante volte voglio? Mi spiago meglio, ho questa classe:


class Issue extends CActiveRecord
{
const TYPE_BUG=0;
const TYPE_FEATURE=1;
const TYPE_TASK=2;
const STATUS_NOT_YET_STARTED=0;
const STARTED=1;
const FINISHED=2;
public function getTypeOptions()
{
return array(
self::TYPE_BUG=>'Bug',
self::TYPE_FEATURE=>'Feature',
self::TYPE_TASK=>'Task',
);
}
public function getStatusOption()
{
return array(
self::STATUS_NOT_YET_STARTED=>'Not yet started',
self::STARTED=>'Started',
self::FINISHED=>'Finished',
);
}

// ecc ...

Cioè io posso usare tranquillamente la costante TYPE_BUG=0; per utilizzarla nel metodo GetStatusOption() ?
Sono 2 menu a tendina praticamente
che con questo grazie a questo metodo:


public static function model($className=__CLASS__)
{
return parent::model($className);
}

faccio il render:


<div class="row">
<?php echo $form->labelEx($model,'type_id'); ?>
<?php echo $form->dropDownList($model,'type_id', $model->getTypeOptions()); ?>
<?php echo $form->error($model,'type_id'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'status_id'); ?>
<?php echo $form->dropDownList($model,'status_id',$model->getStatusOption()); ?>
<?php echo $form->error($model,'status_id'); ?>
</div>


(scusate il casino, ma non tiene una sega di indentazione il code)

Eltarion
18th November 2011, 01:27
la costante puoi usarla dove vuoi all'interno della classe, se la dichiari public anche fuori.

non ho capito la seconda domanda però :P

Mez
18th November 2011, 01:36
la costante puoi usarla dove vuoi all'interno della classe, se la dichiari public anche fuori.

non ho capito la seconda domanda però :P

con 3 costanti che hanno valore 0,1,2 posso usarle all'infinito dentro a tutti i metodi che creo della classe? usando il self:: giusto?
io posso creare altre funzioni Options() richiamando dentro le 3 costanti, questo intendo