Problem s prekladom PHP

Problem s prekladom PHP
« kdy: 11. 11. 2019, 11:50:56 »
Dobry den.

Mam aplikaciu v PHP. Je to znovu prebrana vec kde treba spravit par uprav. V principe pouziva subor function.php kde su vsetky funkcie ktore sa uz len dalej volaju na stranke. Problem je ze mam funkciu
Kód: [Vybrat]
function formValueToReadableValue($approvalFlowId, $fieldName, $fieldValue, $fileName) {
global $settings;

if(!isset($settings['readable_fields'][$approvalFlowId][$fieldName])) {
return $fieldValue;
}

if($settings['readable_fields'][$approvalFlowId][$fieldName]['special'] === false) {
if(isset($settings['readable_fields'][$approvalFlowId][$fieldName]['values'][$fieldValue])) {
return $settings['readable_fields'][$approvalFlowId][$fieldName]['values'][$fieldValue];
} else {
return 'N.A.';
}
}

if($settings['readable_fields'][$approvalFlowId][$fieldName]['special'] === true && (!isset($settings['readable_fields'][$approvalFlowId][$fieldName]['upload']) || $settings['readable_fields'][$approvalFlowId][$fieldName]['upload'] === false)) {
if(isset($settings['readable_fields'][$approvalFlowId][$fieldName]['suffix'])) {
return $fieldValue . ' ' . $settings['readable_fields'][$approvalFlowId][$fieldName]['suffix'];
}

if(isset($settings['readable_fields'][$approvalFlowId][$fieldName]['prefix'])) {
if($settings['readable_fields'][$approvalFlowId][$fieldName]['prefix'] == '€') {
return '€ ' . number_format($fieldValue, 0, '.', ',');
}
}
}

if($settings['readable_fields'][$approvalFlowId][$fieldName]['special'] === true && (isset($settings['readable_fields'][$approvalFlowId][$fieldName]['upload']) || $settings['readable_fields'][$approvalFlowId][$fieldName]['upload'] === true)) {
return '<a target="_blank" href="/download?file=' . $fieldValue . '">' . (!empty($fileName) ? $fileName : $fieldValue) . '</a>';
}

return $fieldValue;
}

Ta by mala sama o sebe osetrovat vystup a sice ze ak je pole cost tak automaticky prida Euro symbol atd atd...
Tu je problem pretoze v programe je to pouzite celkom 4x na 4 roznych miestach.
Pouzivam to takto

Kód: [Vybrat]
<tr>
<td><b>Requester</b></td><td><?= $flows[0]->firstname ?> <?= $flows[0]->lastname ?><br /></td>
</tr>
<?php foreach($fields as $field) { ?>
<td><b><?php 
$field_new_name $field->field_name;
$field_new_name str_replace("_"," ",$field_new_name);
$field_new_name ucfirst($field_new_name);
echo $field_new_name ?>
</b></td><td><?= formValueToReadableValue($flows[0]->approval_flow_id, $field->$field_name, $field->field_value, $field->filename) ?> <br /></td>
</tr>
<?php ?>

A tu je problem. Na 1 stranek to ukazuje super ako ma teda namiesto 100 je 100Eur atd atd.

Ten isty kus kodu mi ale nefunguje na ostatnych strankach kde je presne to iste. Ale dostavam chybu hned na prvej polozke Quote order number   
Fatal error: Cannot access empty property in 42....

Vedel by niekto poradit?
« Poslední změna: 11. 11. 2019, 11:55:22 od Wangarad »


Kit

  • *****
  • 853
    • Zobrazit profil
    • E-mail
Re:Problem s prekladom PHP
« Odpověď #1 kdy: 11. 11. 2019, 12:18:41 »
Evidentně jsou v parametrech $approvalFlowId a $fieldName takové hodnoty, pro které nejsou definovány odpovídající hodnoty v $settings.

Je snad jasné, že tento kousek kódu je odporným hnusem. Dá se to však napravit.

Re:Problem s prekladom PHP
« Odpověď #2 kdy: 11. 11. 2019, 13:17:58 »
Kit : Dakujem uz som zistil kde je preklep. No pomaly to opravujem funkciu po funkcii. Pan programator to mal ako celkom dobry bussines. Vsetko hard-code. Niekto do firmy prisiel alebo dal vypoved? Bez programatora si si neskrtol. Kazdeho pekne rucne odmazat alebo dopisat do prislusnej podstranky. Ale zasa za cca 2000Eur za mesiac ako technicka podpora nemal panko zly bussines plan.

Re:Problem s prekladom PHP
« Odpověď #3 kdy: 11. 11. 2019, 13:23:58 »
Inu mal som tam preklep a sice
$field->$field_name = $field->field_name
Ale aj tak mi to nechce konvertovat a vypisuje len raw data s db.

Kit

  • *****
  • 853
    • Zobrazit profil
    • E-mail
Re:Problem s prekladom PHP
« Odpověď #4 kdy: 11. 11. 2019, 13:29:51 »
Docela mi pomohlo, když jsem hned za řádek global dal tohle:
Kód: [Vybrat]
$flowId = $settings['readable_fields'][$approvalFlowId][$fieldName] ?? null;a provedl substituci na ostatních místech.

Teď už vidím, že refaktoring bude hračka.