рд╣рдо рдЕрдкрд╛рдЪреЗ, PHP рдФрд░ MySQL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдПрдкреАрдЖрдИ рд▓рд┐рдЦрддреЗ рд╣реИрдВ

рдпрд╣ рд╕рдм рдХреИрд╕реЗ рд╢реБрд░реВ рд╣реБрдЖ



рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдореБрдЭреЗ рдЕрдкрдиреА рд╕рд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рдЖрдИрдУрдПрд╕ рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдЬрд┐рд╕ рдкрд░ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЧрдИ рдереА - рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ mysql рдбреЗрдЯрд╛рдмреЗрд╕, рдЪрд┐рддреНрд░, рдлрд╛рдЗрд▓реЗрдВ рдФрд░ рдЕрдиреНрдп рд╕рд╛рдордЧреНрд░реАред
рдЬрд┐рди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рд╡реЗ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИрдВ:
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрдВрдЬреАрдХрд░рдг / рдкреНрд░рд╛рдзрд┐рдХрд░рдг;
рдХреБрдЫ рдбреЗрдЯрд╛ рднреЗрдЬрдирд╛ / рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд╛рдорд╛рдиреЛрдВ рдХреА рд╕реВрдЪреА)ред

рдФрд░ рдлрд┐рд░ рдореИрдВ рдЕрдкрдиреЗ рдПрдкреАрдЖрдИ рдХреЛ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ - рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╣рд┐рдд рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рдЧ рдХреЗ рд▓рд┐рдПред

рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛



рдореЗрд░реЗ рдирд┐рдкрдЯрд╛рди рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рдерд╛:
рд╕рд░реНрд╡рд░ - рдЕрдкрд╛рдЪреЗ, PHP 5.0, MySQL 5.0
рдХреНрд▓рд╛рдЗрдВрдЯ - рдПрдВрдбреНрд░реЙрдЗрдб, рдЖрдИрдУрдПрд╕ рдбрд┐рд╡рд╛рдЗрд╕, рдХреЛрдИ рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░

рдореИрдВрдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдореИрдВ рд╕рд░реНрд╡рд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдФрд░ рдЙрд╕рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП JSON рдбреЗрдЯрд╛ рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ - PHP рдФрд░ Android рдореЗрдВ рдЗрд╕рдХреА рд╕рд╛рджрдЧреА рдФрд░ рдореВрд▓ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдПред IOS рдиреЗ рдореБрдЭреЗ рдпрд╣рд╛рдБ рдкрд░реЗрд╢рд╛рди рдХрд┐рдпрд╛ - рдЗрд╕рдореЗрдВ рджреЗрд╢реА JSON рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИ (рдореБрдЭреЗ рдпрд╣рд╛рдБ рддреГрддреАрдп-рдкрдХреНрд╖ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрдбрд╝рд╛)ред


рдпрд╣ рднреА рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдХрд┐ рдЕрдиреБрд░реЛрдз GET рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдФрд░ POST рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ (PHP рдореЗрдВ $ _REQUEST рдпрд╣рд╛рдБ рдорджрдж рдХреА рдЧрдИ) рджреЛрдиреЛрдВ рдХреЛ рднреЗрдЬрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдиреЗ рдХрд┐рд╕реА рднреА рдЙрдкрд▓рдмреНрдз рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ GET рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдкреАрдЖрдИ рдкрд░реАрдХреНрд╖рдг рдХреА рдЕрдиреБрдорддрд┐ рджреАред

рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдкреНрд░рд╢реНрдиреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛:
http: // [рд╕рд░реНрд╡рд░ рдХрд╛ рдкрддрд╛] / [рдПрдкреАрдЖрдИ рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдкрде] /? [api_name]ред [рд╡рд┐рдзрд┐_рдирд╛рдо] = [[JSON рдХреЗ рдлреЙрд░реНрдо {"рд╣реИрд▓реЛ": "рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб"}]

Api рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдкрде рд╡рд╣ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рдЬрдбрд╝ index.php рдлрд╝рд╛рдЗрд▓ рд╣реИ - рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реИ
рдирд╛рдо рдПрдкреАрдЖрдИ рд╣реИ - рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕рдореВрд╣ рдХреЗ рдПрдкреАрдЖрдИ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, рдбреЗрдЯрд╛рдмреЗрд╕, рд╕рд╛рдордЧреНрд░реА, рдЖрджрд┐ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдПрдкрд┐ рдХреЛ рдЗрд╕рдХрд╛ рдирд╛рдо рдорд┐рд▓рд╛
рд╡рд┐рдзрд┐ рдХрд╛ рдирд╛рдо - рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдПрдкреАрдЖрдИ рдореЗрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд╡рд┐рдзрд┐ рдХрд╛ рдирд╛рдо
JSON - рд╡рд┐рдзрд┐ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП JSON рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡

рдХрдВрдХрд╛рд▓ рдПрдкреАрдЖрдИ



рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдХрдВрдХрд╛рд▓ рдПрдкреАрдЖрдИ рдореЗрдВ рдХрдИ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рд╣реЛрддреЗ рд╣реИрдВ:
index.php - рд╕рднреА рдПрдкреАрдЖрдИ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП Apache рдЦрд╛рддреЛрдВ рдореЗрдВ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдЗрдВрдбреЗрдХреНрд╕ рдлрд╛рдЗрд▓, рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░реНрд╕ рдХреЛ рдкрд╛рд░ рдХрд░рддреА рд╣реИ рдФрд░ рдПрдкреАрдЖрдИ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рддреА рд╣реИ
MySQLiWorker - MySQLi рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ MySQL рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХрд▓ рд╡рд░реНрдЧ
apiBaseCalss.php - рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕рднреА API рдХреЗ рд▓рд┐рдП рдореВрд▓ рд╡рд░реНрдЧ - рдкреНрд░рддреНрдпреЗрдХ API рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
apiEngine.php - рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдореБрдЦреНрдп рд╡рд░реНрдЧ - рдкрд╛рд╕ рдХрд┐рдП рдЧрдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд╛рд░ рдХрд░рддрд╛ рд╣реИ (index.php рдореЗрдВ рдЙрдирдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рдмрд╛рдж) рд╡рд╛рдВрдЫрд┐рдд рдПрдкреАрдЖрдИ рд╡рд░реНрдЧ (рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рд╡рд┐рдзрд┐ рдХрд╣рддрд╛ рд╣реИ рдФрд░ JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИ
apiConstants.php - рдПрдкреАрдЖрдИ рдХреЙрд▓ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рд╕рд╛рде рд╡рд░реНрдЧ
apitest.php - рдЙрддреНрдкрд╛рджрди рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдирдП рддрд░реАрдХреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдПрдкреАрдЖрдИ

рдкреВрд░рд╛ рддрдВрддреНрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
рд╣рдо рд╕рд░реНрд╡рд░ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, www.example.com/api/?apitest.helloWorld= {}
рд╕рд░реНрд╡рд░ рдХреА рдУрд░, index.php рдлрд╝рд╛рдЗрд▓ - рдкрд╛рд░рд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИред Index.php рд╣рдореЗрд╢рд╛ рдкрд╛рд░рд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ $ _REQUEST рдХреА рд╕реВрдЪреА рд╕реЗ рдХреЗрд╡рд▓ рдкрд╣рд▓рд╛ рддрддреНрд╡ рд▓реЗрддрд╛ рд╣реИ - рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдлреЙрд░реНрдо рдХрд╛ рдПрдХ рдбрд┐рдЬрд╝рд╛рдЗрди www.example.com/api/?apitest.helloWorld= {} & apitest.helloestorld2 - рдХреЗрд╡рд▓ рдПрдкрд▓рд╕реНрдЯ рдореЗрдВ рд╣реЗрд▓реНрд▓реЛрд╡рд░реНрд▓реНрдб рдкрджреНрдзрддрд┐ рдХреЛ рдмреБрд▓рд╛рдПрдЧрд╛ред рд╣реЗрд▓реНрд▓реЛрд╡рд░реНрд▓реНрдб 2 рдореЗрдердб рдХреЙрд▓ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧреА

рдЕрдм рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ



рдореИрдВрдиреЗ рдХрд╛рдлреА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рддрд╛рдХрд┐ рдкрд╛рда рдХреЗ рддрд╣рдд рдЬреНрдпрд╛рджрд╛ рдЬрдЧрд╣ рди рд▓реЗ рд╕рдХреЗред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЙрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЬрд╣рд╛рдВ рдХреЛрдИ рдЯрд┐рдкреНрдкрдгреА рдирд╣реАрдВ рд╣реИ, рдореИрдВ рдПрдХ рд╡рд┐рд╡рд░рдг рджреВрдВрдЧрд╛ред

index.php


рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдерд╛, рдпрд╣ рдЕрдкрд╛рдЪреЗ рдХреЗ рд▓рд┐рдП рдЗрдирдкреБрдЯ рдЗрдВрдбреЗрдХреНрд╕ рдлрд╝рд╛рдЗрд▓ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ www.example.com/api рдлреЙрд░реНрдо рдХреЗ рд╕рднреА рдХреЙрд▓ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдЧрд╛ред

<?php header('Content-type: text/html; charset=UTF-8'); if (count($_REQUEST)>0){ require_once 'apiEngine.php'; foreach ($_REQUEST as $apiFunctionName => $apiFunctionParams) { $APIEngine=new APIEngine($apiFunctionName,$apiFunctionParams); echo $APIEngine->callApiFunction(); break; } }else{ $jsonError->error='No function called'; echo json_encode($jsonError); } ?> 


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд╕рд╛рдордЧреНрд░реА рдкреНрд░рдХрд╛рд░ - рдЯреЗрдХреНрд╕реНрдЯ / html (рдлрд┐рд░ рдЖрдк рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ) рдФрд░ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ - UTF-8 рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдлрд┐рд░ рд╣рдо рдЬрд╛рдБрдЪрддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рд╣рдорд╕реЗ рдХреБрдЫ рдорд╛рдБрдЧ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ JSON рдХреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВред
рдпрджрд┐ рдЕрдиреБрд░реЛрдз рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ, рддреЛ рд╣рдо рдПрдкреАрдЖрдИ рдЗрдВрдЬрди рдлрд╝рд╛рдЗрд▓ - apiEngine.php рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкрд╛рд░рд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЗрдВрдЬрди рд╡рд░реНрдЧ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдПрдкреАрдЖрдИ рдкрджреНрдзрддрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВред
рд╣рдо рд▓реВрдк рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдерд╛ рдХрд┐ рд╣рдо рдХреЗрд╡рд▓ рдПрдХ рдХреЙрд▓ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░реЗрдВрдЧреЗред

apiEngine.php


рджреВрд╕рд░рд╛ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдПрдкрд┐рдВрдЬрд╛рдЗрди рд╡рд░реНрдЧ рд╣реИ - рдпрд╣ рдПрдкреА рдФрд░ рдЙрдирдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЬрди рд╣реИред
 <?php require_once('MySQLiWorker.php'); require_once ('apiConstants.php'); class APIEngine { private $apiFunctionName; private $apiFunctionParams; //    API   API     static function getApiEngineByName($apiName) { require_once 'apiBaseClass.php'; require_once $apiName . '.php'; $apiClass = new $apiName(); return $apiClass; } // //$apiFunctionName -  API      apitest_helloWorld //$apiFunctionParams - JSON      function __construct($apiFunctionName, $apiFunctionParams) { $this->apiFunctionParams = stripcslashes($apiFunctionParams); //      [0] -  API, [1] -    API $this->apiFunctionName = explode('_', $apiFunctionName); } // JSON  function createDefaultJson() { $retObject = json_decode('{}'); $response = APIConstants::$RESPONSE; $retObject->$response = json_decode('{}'); return $retObject; } //       function callApiFunction() { $resultFunctionCall = $this->createDefaultJson();// JSON  $apiName = strtolower($this->apiFunctionName[0]);// API     if (file_exists($apiName . '.php')) { $apiClass = APIEngine::getApiEngineByName($apiName);//  API $apiReflection = new ReflectionClass($apiName);//       try { $functionName = $this->apiFunctionName[1];//    $apiReflection->getMethod($functionName);//   $response = APIConstants::$RESPONSE; $jsonParams = json_decode($this->apiFunctionParams);//    JSON  if ($jsonParams) { if (isset($jsonParams->responseBinary)){//    JSON,      zip, png  .  return $apiClass->$functionName($jsonParams);//   API }else{ $resultFunctionCall->$response = $apiClass->$functionName($jsonParams);//   API   JSON  } } else { //   JSON   $resultFunctionCall->errno = APIConstants::$ERROR_ENGINE_PARAMS; $resultFunctionCall->error = 'Error given params'; } } catch (Exception $ex) { //  $resultFunctionCall->error = $ex->getMessage(); } } else { //  API   $resultFunctionCall->errno = APIConstants::$ERROR_ENGINE_PARAMS; $resultFunctionCall->error = 'File not found'; $resultFunctionCall->REQUEST = $_REQUEST; } return json_encode($resultFunctionCall); } } ?> 


apiConstants.php


рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

 <?php class APIConstants { //  -   JSON  public static $RESULT_CODE="resultCode"; // -      JSON   apiEngine public static $RESPONSE="response"; //  public static $ERROR_NO_ERRORS = 0; //    public static $ERROR_PARAMS = 1; //   SQL    public static $ERROR_STMP = 2; //    public static $ERROR_RECORD_NOT_FOUND = 3; //     .         public static $ERROR_ENGINE_PARAMS = 100; // zip  public static $ERROR_ENSO_ZIP_ARCHIVE = 1001; } ?> 


MySQLiWorker.php


рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХрд▓ рд╡рд░реНрдЧред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрд╣ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХреБрдВрд╡рд╛рд░рд╛ рд╣реИ - рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдРрд╕реЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред

 <?php class MySQLiWorker { protected static $instance; // object instance public $dbName; public $dbHost; public $dbUser; public $dbPassword; public $connectLink = null; //      new MySQLiWorker private function __construct() { /* ... */ } //      private function __clone() { /* ... */ } //     unserialize private function __wakeup() { /* ... */ } //   public static function getInstance($dbName, $dbHost, $dbUser, $dbPassword) { if (is_null(self::$instance)) { self::$instance = new MySQLiWorker(); self::$instance->dbName = $dbName; self::$instance->dbHost = $dbHost; self::$instance->dbUser = $dbUser; self::$instance->dbPassword = $dbPassword; self::$instance->openConnection(); } return self::$instance; } //            ->bind function prepareParams($params) { $retSTMTString = ''; foreach ($params as $value) { if (is_int($value) || is_double($value)) { $retSTMTString.='d'; } if (is_string($value)) { $retSTMTString.='s'; } } return $retSTMTString; } //   public function openConnection() { if (is_null($this->connectLink)) { $this->connectLink = new mysqli($this->dbHost, $this->dbUser, $this->dbPassword, $this->dbName); $this->connectLink->query("SET NAMES utf8"); if (mysqli_connect_errno()) { printf(" : %s\n", mysqli_connect_error()); $this->connectLink = null; } else { mysqli_report(MYSQLI_REPORT_ERROR); } } return $this->connectLink; } //    public function closeConnection() { if (!is_null($this->connectLink)) { $this->connectLink->close(); } } //     public function stmt_bind_assoc(&$stmt, &$out) { $data = mysqli_stmt_result_metadata($stmt); $fields = array(); $out = array(); $fields[0] = $stmt; $count = 1; $currentTable = ''; while ($field = mysqli_fetch_field($data)) { if (strlen($currentTable) == 0) { $currentTable = $field->table; } $fields[$count] = &$out[$field->name]; $count++; } call_user_func_array('mysqli_stmt_bind_result', $fields); } } ?> 


apiBaseClass.php


рдЦреИрд░, рдпрд╣рд╛рдВ рд╣рдо рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдЖрддреЗ рд╣реИрдВ - рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕рднреА рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рд╡рд░реНрдЧред

 <?php class apiBaseClass { public $mySQLWorker=null;//     //    function __construct($dbName=null,$dbHost=null,$dbUser=null,$dbPassword=null) { if (isset($dbName)){//          $this->mySQLWorker = MySQLiWorker::getInstance($dbName,$dbHost,$dbUser,$dbPassword); } } function __destruct() { if (isset($this->mySQLWorker)){ //     , $this->mySQLWorker->closeConnection(); //         } } //  JSON   function createDefaultJson() { $retObject = json_decode('{}'); return $retObject; } // JSON     MySQLiWorker function fillJSON(&$jsonObject, &$stmt, &$mySQLWorker) { $row = array(); $mySQLWorker->stmt_bind_assoc($stmt, $row); while ($stmt->fetch()) { foreach ($row as $key => $value) { $key = strtolower($key); $jsonObject->$key = $value; } break; } return $jsonObject; } } ?> 


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ рдХрдИ "рдЙрдкрдпреЛрдЧрд┐рддрд╛" рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ, рдЬреИрд╕реЗ:
рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИ рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рдПрдкреАрдЖрдИ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ;
рд╡рд┐рдзреНрд╡рдВрд╕рдХ - рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рд░рд┐рд╣рд╛рдИ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддрд╛ рд╣реИ - рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдкрд┐рдд рдХрдиреЗрдХреНрд╢рди рдХреЛ рддреЛрдбрд╝рдирд╛
createDefaultJson - рд╡рд┐рдзрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ JSON рдмрдирд╛рддрд╛ рд╣реИ
fillJSON - рдпрджрд┐ рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЕрдиреБрд░реЛрдз рдХреЗрд╡рд▓ рдПрдХ рд░рд┐рдХреЙрд░реНрдб рд▓реМрдЯрд╛рдПрдЧрд╛, рддреЛ рдпрд╣ рд╡рд┐рдзрд┐ JSON рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдХреЗ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рднрд░ рдЬрд╛рдПрдЧреАред

рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдПрдкреАрдЖрдИ рдмрдирд╛рдПрдВ



рдпрд╣ рдЗрд╕ рдПрдкреАрдЖрдИ рдХреА рдкреВрд░реА рд░реАрдврд╝ рд╣реИред рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдПрдкреАрдЯреА рдирд╛рдордХ рдкрд╣рд▓реЗ рдПрдкреАрдЖрдИ рдмрдирд╛рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╣ рд╕рдм рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдФрд░ рдЗрд╕рдореЗрдВ рдХреБрдЫ рд╕рд░рд▓ рдХрд╛рд░реНрдп рд▓рд┐рдЦреЗрдВ:
рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдПрдХ
рд╡рд╣ рдорд╛рдкрджрдВрдбреЛрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╣рдорд╛рд░реЗ рд╕рд╛рде рд▓реМрдЯрд╛рдПрдЧреА, рддрд╛рдХрд┐ рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ рд╡рд╣ рдЙрдиреНрд╣реЗрдВ рдкрдврд╝рддреА рд╣реИ
рдПрдХ рдЬреЛ рд╣рдореЗрдВ рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ рд▓реМрдЯрд╛рдПрдЧрд╛

рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХрд╛ apitest.php рд╡рд░реНрдЧ рдмрдирд╛рддреЗ рд╣реИрдВ

 <?php class apitest extends apiBaseClass { //http://www.example.com/api/?apitest.helloAPI={} function helloAPI() { $retJSON = $this->createDefaultJson(); $retJSON->withoutParams = 'It\'s method called without parameters'; return $retJSON; } //http://www.example.com/api/?apitest.helloAPIWithParams={"TestParamOne":"Text of first parameter"} function helloAPIWithParams($apiMethodParams) { $retJSON = $this->createDefaultJson(); if (isset($apiMethodParams->TestParamOne)){ //   ,    $retJSON->retParameter=$apiMethodParams->TestParamOne; }else{ $retJSON->errorno= APIConstants::$ERROR_PARAMS; } return $retJSON; } //http://www.example.com/api/?apitest.helloAPIResponseBinary={"responseBinary":1} function helloAPIResponseBinary($apiMethodParams){ header('Content-type: image/png'); echo file_get_contents("http://habrahabr.ru/i/error-404-monster.jpg"); } } ?> 


рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдЙрд╕ рдкрддреЗ рдкрд░ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ рдЬрд┐рд╕ рдкрд░ рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рддреНрд╡рд░рд┐рдд рдЕрдиреБрд░реЛрдз рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рддреАрди рддрд░реАрдХреЗ рд╣реИрдВ
helloAPI


 function helloAPI() { $retJSON = $this->createDefaultJson(); $retJSON->withoutParams = 'It\'s method called without parameters'; return $retJSON; } 


рдпрд╣ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╕рд░рд▓ рд╡рд┐рдзрд┐ рд╣реИред рдЙрдирдХрд╛ GET рдкрддрд╛ www.example.com/api/?apitest.helloAPI= {} рд╣реИ

рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдРрд╕рд╛ рдкреГрд╖реНрда рд╣реЛрдЧрд╛ (рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ)

helloAPI

helloAPIWithParams

рдпрд╣ рд╡рд┐рдзрд┐ рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рд▓реЗ рдЬрд╛рддреА рд╣реИред TestParamOne рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣реИ, рдФрд░ рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЬрд╛рдВрдЪ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рдЗрд╕реЗ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдлрд┐рд░ JSON рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛

 function helloAPIWithParams($apiMethodParams) { $retJSON = $this->createDefaultJson(); if (isset($apiMethodParams->TestParamOne)){ //   ,    $retJSON->retParameter=$apiMethodParams->TestParamOne; }else{ $retJSON->errorno= APIConstants::$ERROR_PARAMS; } return $retJSON; } 

рдирд┐рд╖реНрдкрд╛рджрди рдкрд░рд┐рдгрд╛рдо

helloAPIWithParams

helloAPIResponseBinary


рдФрд░ рдЕрдВрддрд┐рдо helloAPIResponseBinary рд╡рд┐рдзрд┐ - рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдбреЗрдЯрд╛ рд▓реМрдЯрд╛рдПрдЧрд╛ - рдПрдХ рдкреГрд╖реНрда рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╣рдм рдХреА рддрд╕реНрд╡реАрд░ рдЬреЛ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ)
 function helloAPIResponseBinary($apiMethodParams){ header('Content-type: image/jpeg'); echo file_get_contents("http://habrahabr.ru/i/error-404-monster.jpg"); } 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ - рдЧреНрд░рд╛рдлрд┐рдХ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЗрдбрд░ рдХрд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╣реИред
рдкрд░рд┐рдгрд╛рдо рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧрд╛

helloAPIResponseBinary

рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рд╣реИ



рдЖрдЧреЗ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП, рдХреЙрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рд╡рд┐рднреЗрдж рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЕрдзрд┐рдХреГрдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ - рдХреБрдЫ рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдХреБрдЫ рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд╕рд╛рдеред

рд╕рдВрджрд░реНрдн



рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, рд╕рднреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ github - simpleAPI рдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рд╣реИ

Source: https://habr.com/ru/post/In143317/


All Articles