1
0
mirror of https://github.com/php/doc-tr.git synced 2026-03-24 07:12:18 +01:00
Files
archived-doc-tr/reference/errorfunc/examples.xml
2022-11-17 16:41:32 +03:00

149 lines
4.8 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: fa6e196973e45c0013c0801e01697757f4b98426 Maintainer: nilgun Status: ready -->
<appendix xml:id="errorfunc.examples" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
&reftitle.examples;
<para>
Aşağıda, PHP hata işleme yeteneklerinin kullanımına ilişkin bir örneğe yer
verilmiştir. Hataları işleme sokan işlevin iletilerinin (XML biçeminde) bir
dosyaya yazılması; kodlama mantığıyla çelişen önemli hataların ise
geliştiriciye eposta ile gönderilmesi sağlanmıştır.
<example>
<title>Bir betikte hataların yakalanıp işleme sokulması</title>
<programlisting role="php">
<![CDATA[
<?php
// Kendi hata işleme sistemimizi oluşturacağız.
error_reporting(0);
// kullanıcı tanımlı hata eylemcisi
function userErrorHandler($errno, $errmsg, $filename, $linenum, $vars)
{
// Hata iletisi için zaman damgası
$dt = date("Y-m-d H:i:s (T)");
// Hata iletisi türlerini bir ilişkisel dizi olarak tanımlayalım.
// Aslında sadece E_WARNING, E_NOTICE, E_USER_ERROR,
// E_USER_WARNING ve E_USER_NOTICE kullanılacak.
$errortype = array (
E_ERROR => 'Hata',
E_WARNING => 'Uyarı',
E_PARSE => 'Çözümleme Hatası',
E_NOTICE => 'Bilginize',
E_CORE_ERROR => 'PHP Hatası',
E_CORE_WARNING => 'PHP Uyarısı',
E_COMPILE_ERROR => 'Derleme Hatası',
E_COMPILE_WARNING => 'Derleme Uyarısı',
E_USER_ERROR => 'Kullanıcı Hatası',
E_USER_WARNING => 'Kullanıcı Uyarısı',
E_USER_NOTICE => 'Kullanıcı Bildirimi',
E_STRICT => 'Çalışma Anı Bildirimi',
E_RECOVERABLE_ERROR => 'Yakalanabilir Ölümcül Hata'
);
// Hataların oluşumunu izlemek için hataları bir değişkene kaydedelim
$user_errors = array(E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE);
$err = "<errorentry>\n";
$err .= "\t<datetime>" . $dt . "</datetime>\n";
$err .= "\t<errornum>" . $errno . "</errornum>\n";
$err .= "\t<errortype>" . $errortype[$errno] . "</errortype>\n";
$err .= "\t<errormsg>" . $errmsg . "</errormsg>\n";
$err .= "\t<scriptname>" . $filename . "</scriptname>\n";
$err .= "\t<scriptlinenum>" . $linenum . "</scriptlinenum>\n";
if (in_array($errno, $user_errors)) {
$err .= "\t<vartrace>" . wddx_serialize_value($vars, "Variables") . "</vartrace>\n";
}
$err .= "</errorentry>\n\n";
// Denemek için:
// echo $err;
// Hatayı günlüğe kaydedelim ve önemliyse ayrıca bana postalayalım
error_log($err, 3, "/usr/local/php4/error.log");
if ($errno == E_USER_ERROR) {
mail("phpdev@example.com", "Critical User Error", $err);
}
}
function distance($vect1, $vect2)
{
if (!is_array($vect1) || !is_array($vect2)) {
trigger_error("Bağımsız değişkenler yanlış, dizi belirtilmesi bekleniyor",
E_USER_ERROR);
return NULL;
}
if (count($vect1) != count($vect2)) {
trigger_error("Vektörlerin aynı boyutta olması gerekir", E_USER_ERROR);
return NULL;
}
for ($i=0; $i<count($vect1); $i++) {
$c1 = $vect1[$i]; $c2 = $vect2[$i];
$d = 0.0;
if (!is_numeric($c1)) {
trigger_error(
"1. vektörün $i konumu bir sayı değil, 0 kullanılıyor",
E_USER_WARNING);
$c1 = 0.0;
}
if (!is_numeric($c2)) {
trigger_error(
"2. vektörün $i konumu bir sayı değil, 0 kullanılıyor",
E_USER_WARNING);
$c2 = 0.0;
}
$d += $c2*$c2 - $c1*$c1;
}
return sqrt($d);
}
$old_error_handler = set_error_handler("userErrorHandler");
// Tanımsız sabit, bir uyarı üretir
$t = TANIMSIZIM;
// bazı "vektörler" tanımlayalım
$a = array(2, 3, "foo");
$b = array(5.5, 4.3, -1.6);
$c = array(1, -3);
// bir kullanıcı hatası üretelim
$t1 = distance($c, $b) . "\n";
// başka bir bir kullanıcı hatası üretelim
$t2 = distance($b, "ben bir dizi değilim") . "\n";
// bir uyarı üretelim
$t3 = distance($a, $b) . "\n";
?>
]]>
</programlisting>
</example>
</para>
</appendix>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->